有个网络库叫gorilla, gorilla有个包叫websocket, websocket包有个方法叫upgrade, 这个upgrade方法的第三个参数怎么用的?

cups_book · · 2791 次点击
这么说吧, websocket是一套类似于http的库,至于你的用户识别的需求是类似于session的功能,属于业务范畴,需要你自己来实现。 而且由于websocket连接的特点,往往只希望发给一个用户,还需要做出保持用户有效连接的管理。 具体来说,我之前做基于go的mud客户端的时候用过websocket做界面,分为几个步骤。 1.给每个连接分配一个唯一ID。 参考https://github.com/herb-go/connections/blob/master/gateway.go 的 Register的方法 这个id相当于session的key,有了这个key才存在直接和客户端1对1交流的前提 2.创建一个用户表,并在表里面保持用户对应的当前有效连接id 参考 https://github.com/herb-go/connections/blob/master/identifier/map.go 有了这么一个映射表,才能对指定的用户发送消息 3.如果有可能的话,可能还需要一个群发机制,类似于你给到的连接里的hub,分不同的频道群发消息 参考https://github.com/herb-go/connections/blob/master/room/room.go 这个实际是学习的socket.io的机制。 然后再配上一定的指令包装库,应该就能对应一般的需求了。 我本身是处于兴趣做了一个mud客户端才深入这一块的,可能在生产环境还需要更细致更完整的发难。 具体我的客户端中用到websocket的地方,可以参考 https://github.com/jarlyyn/hellclient/blob/master/src/vendor/modules/services/ui/socket.go 中的Enter方法 连接,注册,登录,然后直接用 users.SendByID("user", data) 发送
#3
更多评论
.............. 你不觉得,如果是websocket链接上上之后,直接发个message回去,网页监听到后set cookie更靠谱么? 另外gorilla是一个网络库,里面有个websocket的包...
#1
1楼 <a href="/user/jarlyyn" title="@jarlyyn">@jarlyyn</a> 谢谢指正, 我修改了标题. 按照你这个思路的话, 我的问题, 就变成了, 怎么识别客户端, 怎么针对某一个具体的客户端, 发送消息 我搜索了很久, 都没有人用过这第三个参数, 你能帮我看看, 它怎么用吗 https://github.com/gorilla/websocket/tree/master/examples/chat 这个例子, 是讲广播的, 好像没有提到怎么针对某个具体的客户端, 发送消息
#2