发送后如何保持Websocket连接处于OPEN就绪状态?

杰基·约翰逊:

我是websockets的新手。

在我的设置中,我有一个用Go语言编写的琐碎的Websocket服务器(游乐场

我创建一个WebSocket对象,设置其onmessage回调并调用其send方法进行测试。

var w = new WebSocket("ws://localhost:12345/echo")

w.onmessage = (msg) => {
   console.log(msg.data)
}

w.onopen = () => {
   w.send("Hello")  // this fires OK
}

我期望基于服务器代码发生的事情是接收“ Hello”消息,并保持每1.5秒向客户端发送“ yahoo”消息。实际发生的是发送了“ Hello”,但没有一个通过。似乎沿着WebSocket.readystate变为3(关闭)。

为了明确起见,服务器接收并打印“ Hello”,然后实际上每1.5秒触发一次“ yahoo”消息,但是此时连接已关闭,因此onmessage回调永远不会触发。

我有什么遗漏或误解吗?

编辑:比较github.com/gorilla与golang.org/x/net对比,声称golang.org/x/net websocket实现不支持pong。这可能是对它的确认。

编辑:当处理程序ServeHTTP函数返回时,包golang.org/x/net/websocket会关闭websocket连接。默认情况下,websocket连接绑定到处理程序的实例。

johlo:

当处理程序函数返回时,您的情况EchoServer将由http框架自动关闭套接字。由于您启动了用于将yahoo响应写入客户端的循环的go例程EchoServer,因此函数将在有时间发送响应之前终止(并因此关闭套接字)。

解决的方法是删除go例程的生成,然后在内进行循环EchoServer

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何保持HttpClient连接保持活动状态?

HTTP处理函数返回后如何保持WebSocket连接打开?

当Kubernetes节点处于``未就绪''状态时如何进行调试

触摸后保持UIButton处于选中状态

使用ServerWebSocketContainer时保持与websocket的连接处于活动状态

如何保持元素:即使单击后仍处于活动状态

如何保持订单处于Redux状态?

播放Scala框架:使用Scala Akka流创建无限源,并保持服务器发送的事件在服务器上的连接处于打开状态

回发ASP.Net Core后如何保持选项卡处于活动状态

单击后保持菜单项的onclick处于活动状态

页面提交并重新加载后,如何保持复选框处于选中状态?

刷新后使WebSocket连接保持活动状态

单击后如何保持Material-UI按钮处于活动状态?

选择保持活动连接时,如何检查连接是否处于活动状态?

重新启动后,带文件拍的K8s Elasticsearch保持“未就绪”状态

单击后如何保持图标处于更改状态。使用CSS

关闭Android应用程序时如何保持Web套接字连接处于活动状态

MTM的测试代理处于“就绪”状态,但无法连接

即使Websocket连接处于活动状态,会话也已过期

处于就绪状态的线程消耗CPU

运行.sh脚本后如何保持终端会话处于活动状态

计划任务运行后如何保持PC处于唤醒状态?

在 onReceive 后保持 BroadcastReceiver 处于活动状态

Angular 6 SignalR 在启动连接时给出“WebSocket 未处于 OPEN 状态”

保持 TCP 连接处于活动状态

如何让 Ratchet WebSocket 保持活动状态?

无法在“WebSocket”上执行“发送”:仍处于连接状态

单击后保持元素处于活动状态

NextJS:如何保持按钮处于活动状态?