2

我有点担心我目前connections对我的websocket.

在我的一页中,我app有:

var socket = io.connect('http://my.ip.address' + ':' + '80' + namespace);
socket.on('connect', function () {
            socket.emit('join', { room: 'venue_' + venue_id });
        });

在这之后我通过了receive一些然后移动到另一个页面。在第二页运行后,我再次返回到上面代码再次运行的第一页。datasocketsocket

我想知道这是否会导致任何类型的问题?我是否应该connect在更早的阶段尝试这样connection不会多次制作?如果是这样,是否可以通过socket变量传递javascript

flask-socketioserver.

谢谢你的帮助。

4

2 回答 2

0

webSocket 连接不会也无法从一个页面存活到下一页面。当浏览器移动到新页面时,该原始页面中的所有 webSocket 连接都将关闭。

因此,无法将 webSocket 连接从一个页面传递到替换它的页面。

因此,使用 webSocket 连接的一种完全正常的方式是在页面加载时创建套接字。创建 webSocket 连接并不是一项繁重的操作。与一个 Ajax 连接相比,最初连接 webSocket 的开销仅明显增加。当然,在它连接后,通过它发送数据是非常高效的(比发出新的 Ajax 请求发送相同的数据效率更高)。

现在,至于您的具体问题:

我想知道这是否会导致任何类型的问题?

不,它不会引起问题。每当页面加载时连接是使用 webSockets 的正常方式。

我是否应该在较早的阶段尝试连接,以免连接多次?

不,您不能将连接从一个页面传递到替换它的页面。

如果是这样,是否可以通过 javascript 传递套接字变量?

它可以通过 Javascript 传递给同一页面内的其他函数,但不能传递给将替换该页面的页面。

于 2015-07-25T04:13:08.153 回答
0

预计每个页面都会创建自己的套接字连接,实际上没有办法解决,正如@jfriend00 在他的回答中解释的那样。

虽然这不会导致任何问题,但使用 WebSocket 和 Socket.IO 的主要原因之一是服务器和客户端之间的低延迟和低开销交换。如果您的应用程序的设计方式需要经常加载新页面,那么这些好处将被延迟和开销部分掩盖,因为必须经常丢弃现有连接才能在下一页加载时重新建立它。我的建议是您评估单页应用程序模型是否可能是您的应用程序的更好选择。使用此模型,整个应用程序会使用初始页面加载,然后不需要重定向到其他页面,从而允许您在应用程序的整个生命周期中保持 Socket.IO 连接。

祝你好运!

于 2015-07-25T19:48:41.490 回答