WebSocket如何保持连接

Posted

技术标签:

【中文标题】WebSocket如何保持连接【英文标题】:How do WebSocket keep connection 【发布时间】:2012-11-16 15:04:12 【问题描述】:

上面写着 websocket

" 使用 ws 通过单个 TCP 套接字进行通信 (不安全)或 wss(安全)协议..."

这是否意味着客户端-服务器只需要一次握手? 但我每秒都在 NodeJs 控制台中看到握手。 它们是什么?

【问题讨论】:

【参考方案1】:

每当用户执行使用 websocket 的 javascript 时,都需要进行握手。 Websockets 不能在页面访问之间重用。当用户关闭或离开页面时,它们会自动关闭。当用户打开一个新选项卡时,将创建第二个套接字,这将需要一个新的握手。

当您的 NodeJs 应用程序是客户端位于 html 页面上的 Web 应用程序时,只要用户请求该页面,就会重新建立连接。因此,当用户浏览您的网站并且每个 HTML 页面上都嵌入了一个使用 websocket 的 javascript 时,您会看到每次点击后都会执行一次新的握手。

当您始终看到新的握手时,尽管只有一个用户始终停留在同一页面上,那么您的应用程序可能确实有问题。它是否可能一直创建新的套接字,尽管它可以重用现有的套接字? (每个new WebSocket 意味着一个新的 websocket 连接意味着正在执行一个新的握手)。

【讨论】:

以上是关于WebSocket如何保持连接的主要内容,如果未能解决你的问题,请参考以下文章

Nginx代理webSocket经常中断的解决方案, 如何保持长连接

在 Python 中打开一个 websocket 并保持打开状态

如何在 ruby​​ on rails 中通过 websocket 发送保持活动的数据包

如何在android服务中建立WebSocket连接?

在 Spring Boot 测试中的纯二进制 websocket 连接期间保持 TestSecurityContextHolder

Websocket客户端重新连接空闲连接