javascript – 有没有办法让每个用户运行一个服务器发送事件而不是每个选项卡?
作者:互联网
我遇到了很多问题,因为我的用户使用多个浏览器的标签来使用同一个应用程序.
问题是每个选项卡将与服务器建立单独的连接以启动服务器发送的事件,服务器将运行循环以完成请求. (如果每个用户打开5个选项卡,那么服务器必须启动5个不同的server-sent-event来响应!)
有没有办法添加某种逻辑来检查客户端和服务器发送的脚本之间是否建立了连接使用相同的连接而不是创建新的连接?
我认为这与使用WebSocket的想法相同.但是,我使用WebSockets的问题是每个用户必须使用服务器发送的事件进行身份验证,并且不确定WebSockets是否可以这样做.当用户登录到应用程序时,我生成一个sessionID,并且会话在允许他们使用该站点之前检查他们的IP /代理数据是否匹配.
如何将每个用户的Server-Sent Event连接最小化为1?
解决方法:
在设置每个客户端的连接时,WebSocket服务器可以使用HTTP标头(以及cookie).
但是,既然你没有使用WebSockets(但是?),那么下一个最好的去处就是你的客户端Javascript.
除非cookie设置了HttpOnly标志,否则Cookie会在那里提供.这将是您在多个浏览器标签中匹配用户的最可靠方式.
浏览器用户代理字符串加上他们的IP地址很诱人,但请记住,大多数家用路由器都使用NAT,许多共同生活的人往往会在不同的计算机上使用相同的浏览器.
标签:php,javascript,websocket,server-sent-events 来源: https://codeday.me/bug/20190623/1272602.html