go语言怎么发送信息 go语言怎么发送信息到微信( 四 )


3. 把返回的用户ID与长连接存入本地缓存,保持用户ID与长连接绑定关系 。
4. 再将用户ID与本推送节点IP存入redis,建立用户(即长连接)与节点绑定关系 , 并设置失效时间 。
5. 采集服务(Collect Service)收集业务消息,首先存入mongodb,然后将消息透传给分发服务(Dispatch Service) 。
6. 分发服务收到消息之后 , 根据消息体中的用户ID , 从redis中获取对应的推送服务节点IP , 然后转发给对应的推送节点 。
7. 推送服务节点收到消息之后,根据用户ID,从本地缓存中取出对应的长连接,将消息推送给客户端 。
其他注意事项:
go语言聊天室实现(二)gorilla/websocket中的聊天室示例我们可以看到 gorilla/websocket中的examples中有一个聊天室的demo 。
我们进入该项目可以看到里面有这样的一些内容
按照官方的运行方式来运行这个项目
在浏览器中打开8080端口 , 可以看到该项目可以被成功运行了 。
就是这样一个简单的demo 。
然后我们去看一下它的具体实现 。
在这个项目中首先定义了一个hub的结构体:
这个结构体中,clients代表所有已经注册的用户,broadcast管道会存储客户端发送来的信息 。register是一个*Client类型的管道,用于存储新注册的用户,unregister管道反之 。
我们打开main.go,main函数的源码为:
在这里首先会新开一个goroutine,去跑hub的run方法,run方法中一个死循环,不停地去轮询hub中的内容
如果取到了新用户 , 就加入到clients中,如果取到了信息,就循环所有的client,将信息写到client.send中 。
我们看到在请求路径为根的时候 , 它会请求一个函数,而这个函数就是将home.html发送到客户端 。
而在请求路径为“/ws”的时候,他会执行一个serveWS的函数 。
每当一个新的用户进来之后,首先将连接升级为长连接,然后将当前的client写到register中 , 由hub.run函数去做处理 。然后开启两个goroutine,一个去读client中发送来的数据,一个将数据写入到所有的client中,去发送给用户 。
这就是整个聊天室的实现原理 。
关于go语言怎么发送信息和go语言怎么发送信息到微信的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。