草庐IT

WebSocket注解

全部标签

go - 在 websocket 握手中设置 Cookie

在websocket握手过程中,如何在Upgrade响应中添加Set-Cookie?我试过下面的代码import(//"encoding/json""golang.org/x/net/websocket"//"io""log""net/http")funcmain(){http.HandleFunc("/v2",onV2Handshake)//Portsbelow1024canbeopenedonlybyroot.err:=http.ListenAndServe(":8080",nil)//err:=http.ListenAndServeTLS(":443","cert.pem","k

Golang websocket 的 SetWriteDeadline 函数

Go的websockets有一个SetWriteDeadline()函数来设置连接的网络写入截止时间。是否需要在每次发送数据前设置,还是在创建连接时设置一次? 最佳答案 要使它有用,请每次都设置它。请注意,它需要一个time.Time,而不是time.Duration:SetWriteDeadline(ttime.Time)error 关于Golangwebsocket的SetWriteDeadline函数,我们在StackOverflow上找到一个类似的问题:

java - 为什么我应该使用 gRPC 而不是 IPC/Simple websocket?

我正在草拟一个微服务系统的架构,计划当前在一台机器上运行(可能在未来分发)。该系统将由用Node.js、GO和可能是Java编写的服务组成。node.js和Java都需要传递指令并从GO服务器接收结果。现在,我正在努力决定是应该使用IPC管道还是增加gRPC和protobuff并使用它们。 最佳答案 它们处于不同的抽象级别并具有不同的用途,因此问题中的“或”是错误的。您将需要两种类型(传输和编码),即使您重新实现其中一种。像匿名或命名管道这样的IPC通常称为传输,它们无法对多个指令或结果进行编码(尽管它们对字节流进行编码)。gRPC

go - 重新连接时丢弃消息的可重新连接的 websocket

我正在用golang实现websocket客户端。我必须在一个websocketsession中发送多条消息。为了处理网络问题,每当连接意外关闭时,我都需要重新连接到websocket服务器。目前我正在考虑这样的实现。for{select{caset:=在上面的示例中,消息在重新连接时堆叠。这不是我的目的。重新连接时如何删除websocket消息? 最佳答案 messagesstackswhilereconnecting.Thisisnotpreferableformypurpose.HowcanIdropwebsocketmess

go - 如何设置 gorilla /websocket 连接以充当浏览器应用程序的 JSON-RPC 客户端?

我有一个前端aplication,连接到websocket并尝试提供json-rpc2以从服务器调用客户端。在使用“github.com/gorilla/websocket”用Go编写的服务器应用程序中为其创建*rpc.Client的最佳方法是什么?我尝试使用*websocket.Conn的UnderlyingConn():jsonrpc2.NewClient(conn.UnderlyingConn()),但它不起作用. 最佳答案 我提供NewClient与io.ReadWriteCloser将读/写转换为websocket的实现操

go - websocket 写关闭消息总是发送 1006

我想向客户端发送关闭代码,但它始终是1006。我试过了,funcServeWs(whttp.ResponseWriter,r*http.Request){conn:=Upgrade(w,r)msg:=websocket.FormatCloseMessage(4001,"myError")//case1conn.WriteMessage(websocket.CloseMessage,msg)//case2//conn.WriteControl(websocket.CloseMessage,msg,time.Now().Add(time.Second))//case3//w,err:=co

go - 如何在golang中释放一个websocket和redis网关服务器资源?

我有一个网关服务器,它可以使用websocket将消息推送到客户端,一个新的客户端连接到我的服务器,我将生成一个cid为了它。然后我还订阅了一个channel,使用cid.如果有任何消息发布到该channel,我的服务器会将其推送到客户端。现在,所有单元都工作正常,但是当我尝试通过thor进行基准测试时,它会崩溃,我罚款DeliverMessage有一些问题,它永远不会退出,因为它有一个死循环。但由于redis需要订阅一些东西,我不知道如何避免循环。func(h*Hub)DeliverMessage(pool*redis.Pool){conn:=pool.Get()deferconn.

Docker nginx 502 用于 GET/Post 请求但不是 websocket 的错误网关

在stackoverflow上有各种类似的案例,但它们几乎都引用了不正确的端口或使用localhost作为IP而不是docker-machineip。vue.js应用程序可以很好地连接到websocket并正常工作。但是,对192.168.99.100:8080/meows和其他端点的GET请求都命中了nginx502badgateway。手动访问端点(而不是vue.js)也会遇到502badgateway。IP设置正确。端口在所有地方都是相同的:8080。端点具有正确的http动词,并且所有端点都有一个指向服务器位置/..{}的nginxupstream。然而连接到网络没有问题,所有

concurrency - 为什么 go.net/websocket'api 不使用 channel 来发送和接收消息?

go.net/websocket包中有Read()和Write()函数,用于通过网络套接字发送和接收消息。为什么它不返回一个用于发送和接收消息的channel?我觉得像websocket、net这样的包是使用gochannel的完美场所。这个设计决定背后的原因是什么? 最佳答案 我不知道WebSocket的确切语义,但总的来说,我认为网络套接字不能很好地映射到channel中。Therewasactuallyanetchanpackage试图通过一般channel做到这一点,但已停止。我认为尝试通过一个channel实现支持大量协议

cordova - 如何解决或绕过错误 websocket : origin not allowed

在我的服务器上,我正在运行gorillawebsocket,我正在尝试使用以下javascript代码从phonegap应用程序进行连接:varconn=newWebSocket("ws://IP:8080/ws");但我收到此错误:websocket:originnotallowedonmyserver.我能做些什么来解决这个问题吗?也许是另一个phonegap库或修复/更新这种连接?我已经尝试了很多phonegap脚本的示例,但没有一个有效。我想在我的服务器上使用那个gorillawebsocket插件,但目前的情况是不可能的。谢谢 最佳答案