寻找一些关于如何在本机Go执行平台和通过WebSocket实现WebSocket客户端的方法的一般指导。
GopherJS似乎有两个WebSocket库,一个在gopherjs/websocket,一个在goxjs/websocket。goxjs/websocket似乎是“同构的”,这意味着它应该在GopherJS中工作,同时保持与golang.org/x/net/websocket兼容的API。这将在这两个执行环境中提供兼容性,这很好,但我不确定这是否是最好的解决方案。gopherjs/websocket似乎不能在浏览器执行环境之外工作,所以它是不可能的。
目前,本机Go应用程序最受推荐的WebSocket实现似乎是gorilla/websocket。我想使用它,因为它似乎有一个好的API,它似乎相当全面的功能。如果导入gopherjs build,我可以成功地运行gorilla/websocket,但我担心它会在JavaScript环境中失败,或者会被编译成不使用浏览器的WebSocket API实现的JavaScript。
对于哪个库适合哪个场景,我没有看到太多的指导,所以希望这可以帮助比较和对比,并为做出一个好的选择提供必要的方向。
发布于 2016-10-24 15:37:47
我没有任何关于你应该做什么的指导,但我可以分享以下事实:
大猩猩/ Websocket包是TCP连接上Websocket协议的一个实现。因为浏览器应用程序不能直接访问TCP连接,所以大猩猩/websocket包将不会在浏览器中运行。
大猩猩/websocket包和gopherjs/websocket包在模型上存在差异。WebSocket协议是基于消息的,大猩猩/websocket包围绕消息公开一个API。gopherjs/websocket提供了使基于消息的WebSocket协议看起来像字节流的绑定。消息不会在gopherjs/websocket中公开。
x/net/websocket包几乎被抛弃了。有些长期存在的与遵守协议有关的问题还没有被解决。
https://stackoverflow.com/questions/40212148
复制相似问题