说明:
我有以下代码片段,似乎效果很好
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
</script>
现在使用套接字创建我正在使用它来执行用户想要的不同任务,例如用户正在与其他在线人聊天...现在,如果用户导航到其他页面并执行其他操作,那该怎么办...为此我要去需要分配给该用户的同一个套接字...我在服务器端有一个数组,它包含连接用户的所有套接字及其ID ...
在访问网站的不同页面时,如何随时随身携带套接字..
例如,我单击一个链接,然后将我带到一个页面...现在我在该页面上发布了一些内容,因为我想要给我的套接字。
答案 0 :(得分:1)
您无法将套接字从一个页面保留到下一个页面。
如果用户要在页面之间导航,那么您需要做两件事:
您的另一个选择是更改您的应用程序,以便更改页面内容,但实际上从未导航到新URL,从而在用户更改内容时保留Javascript状态(以及任何连接的套接字)。这有时称为单页设计。您通常会使用Ajax调用来获取新内容,然后使用DOM操作调用来更改用户在浏览器中看到的内容。
答案 1 :(得分:0)
您可以通过创建单个页面应用程序(网站)来实现此目的,该应用程序使用Ajax加载所有内容,而不是从基页导航。
其他旧的脏解决方案(可能更复杂)是使用带iframe
的页面并加载其中的所有内容,但将SocketIO实例保留在父页面中。请注意,在这种情况下,页面的网址不会更改,因此用户将无法正确添加书签。