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 发送保持活动的数据包
在 Spring Boot 测试中的纯二进制 websocket 连接期间保持 TestSecurityContextHolder