有办法让客户端上的相同socket.io连接,如果用户打开一个新页面或刷新页面,可能存储在会话插座或者这是不可能的?Socket.io保持对客户端连接时,客户端刷新或打开新的一页
回答
这是不可能的。页面更改或刷新时,不能保持相同的socket.io或webSocket客户端连接。浏览器根本就没有这样做。当加载新页面或刷新当前页面时,前一页中的所有资源都将被浏览器关闭并释放,包括socket.io/webSocket连接。
所以,你的服务器有期待新加载的页面新socket.io连接。如果您使用cookie或服务器端会话对象,则可以在服务器上识别何时从先前看到的客户端连接到服务器,然后服务器可以相应地采取行动,以便意识到这只是以前的客户端重新连接在新的页面上。
为什么downvote?如果你认为这是错误的,那么请将主机页面更改为其他页面时,确保如何保持socket.io连接处于打开状态。 – jfriend00
以下内容如何:在客户端上存储cookie并在服务器上存储曾连接到应用程序的客户端对象列表。在客户端的连接事件中,检查cookie值是否在浏览器中设置,以及之前连接的客户端是哪个。由于重放攻击,这对于真实世界的实现可能是一个问题,但取决于系统应该做什么,它仍然是一个可行的解决方案。没有? – FedericoCapaldo
@FedericoCapaldo - 您的Cookie方案通常称为会话,并且是大多数服务器如何从一个页面跟踪客户端 - 这就是Cookie的用途。它可用于常规的http请求或传入的webSocket请求(所有webSocket连接都以http请求开始,因此它们在连接时获取cookie)。如果您使用express与node.js,那么会有快速会话模块为您执行大量的会话管理工作,并创建这些会话的列表并自动将它们与每个基于Cookie的传入连接关联。 – jfriend00
- 1. socket.io客户端重新连接超时
- 2. Socket.io客户端在Azure主机上保持重新连接
- 3. socket.io客户端不连接
- 4. 如何从客户端断开连接并重新连接socket.io?
- 5. 客户不handshaken客户端应该重新连接,socket.io集群
- 6. 当客户端断开连接时保持服务器打开
- 7. 客户端重新连接
- 8. SignalR客户端断开/连接每页刷新。 ASP.NET MVC
- 9. 保持客户端对象模型连接打开
- 10. 保持一个连接为每个客户端打开php
- 11. Socket.io警告:客户端不握手客户端应重新连接
- 12. Socket.io日志(客户端不握手客户端应该重新连接)
- 13. Node.js和socket.io - 客户端不握手客户端应重新连接
- 14. socket.io确保客户端重新连接状态
- 15. 带apache的Socket.io - 套接字客户端1 id刷新连接的客户端2
- 16. Socket.io - 客户端断开后手动重新连接
- 17. 客户端socket.id刷新?
- 18. 刷新客户端资源
- 19. 客户端到客户端的连接?
- 20. c#服务器客户端,客户端不重新连接
- 21. 多个socket.io客户端连接 - 强制新连接
- 22. 客户端断开连接
- 23. Socket.IO socket.id更改为同一客户端,无需重新连接
- 24. 客户端的Socket.IO
- 25. socket.io断开连接事件,客户端断开连接检测
- 26. socket.io客户端如何进行连接
- 27. socket.io-客户端连接,但不发光
- 28. Socket.io客户端未连接服务器
- 29. 新客户端在Paho Java客户端连接时的回拨函数
- 30. 重新连接断开连接的客户端套接字
抱歉,我有一个问题,导致客户端每次连接到我的socket.io他得到一个新socket.id,我想,以确定用户发送消息仅从该客户所有打开的连接时间,所以我搜索一下,我可以用socket.io房间解决我的问题 – John
这是正确的。每个新连接都会获得一个新ID。如果你想要一个持久的引用来标识一个用户,你应该在新连接时使用一个在'socket.request.headers.cookie'中可用的cookie,并且你可以使用socket.io中间件来设置一个cookie不存在。或者,您可以使用诸如express-session之类的更常规的持久会话,然后再从socket.io访问它。 – jfriend00