繁体   English   中英

经典ASP:如果当前其他用户正在查看页面,则通知用户

[英]Classic ASP: Notify user if page is currently being viewed by another user

我已经在内部Intranet中构建了一个Help Desk系统。 总的来说,该系统运行良好。 但是,我真的很想添加一些我很难解决的功能。 我想做的是,当用户查看帮助通知单时,放置了某种“锁定”或“通知”,这样,当其他任何用户查看该页面时,他们就会被告知有人正在使用该通知单。 我的问题是,即使是我的小团队,我们也经常会发现自己同时在同一张票上工作。 如果当我打开一张票时能收到某种通知,告诉我某人已经在处理此票,所以我们不会加倍努力,那将是非常有用的。

我目前在网站上使用以下技术:经典ASP,JavaScript,JQuery和SQL备份数据库。

我曾考虑过以某种方式对SQL数据库中的故障单中的“ locked”和“ lockedBy”字段进行编码,以便在打开故障单时使用“ locked” = Y和“ lockedBy” =更新数据库。 然后,当页面关闭,导航离开或发布故障单时,“已锁定”将更改为“ N”,而“ lockedBy”将更改为“ NULL”。

我想提出任何建议。

我在某些应用程序中执行类似的操作,并将锁定状态,用户和日期存储在数据库中。

问题是,如果用户关闭其浏览器,它将无法解锁。

您可以通过忽略日期早于特定时间的锁定来解决此问题(例如,如果锁定日期超过2小时,则忽略该锁定)。

您可以通过在JavaScript计时器上运行AJAX例程来进一步改善此状况,如果打开浏览器窗口,该例程会定期更新锁定日期。 例如,每分钟运行一次AJAX调用以更新锁定时间,然后您可以忽略早于1分钟的锁定。

应用程序对象(或与此相关的数据库)可以在所有用户之间共享状态,这是VBScript版本:

function ClaimTicket(byval ticket, byval user, byref claimedby)
    on error resume next
    dim key
    key = "TICKET." & ticket
    application.lock
    if (application(key) = "") then
        application(key) = user
        ClaimTicket = true
        claimedby = user
    else
        claimedby = application(key)
    end if
    application.unlock
end

必须进行锁定和解锁,以防止其他人试图索取票证。 该函数返回领取票证的人的姓名。 代码尚未测试。

我最终在加载和beforeunload的页面上使用ajax调用来更新数据库,以指示票证正在被其他人查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM