需求:从前端发送的数据传到后端服务器,后端服务器在反馈信息完成信息交流,当多个客户端时,一个客户端发送的数据通过客户端广播发个每个客户端

一、准备工作:因为Go语言标准包里面没有提供对WebSocket的支持,但是在由官方维护的go.net子包中有对这个的支持,需要独立下载
这里我们通过git导包
1.创建目录
mkdir -p $GOPATH/src/golang.org/x/
2.进入目录
cd $GOPATH/src/golang.org/x/
3.下载包
git clone https://github.com/githup.com/golang/net.git
4.安装
go install net
二、了解WebSocket编程原理
1、WebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行双工通信,使得浏览器和服务器只需要做一个握手的动作,就可以在浏览器和服务器之间建立一条连接通道。且此连接会保持在活动状态,你可以使用JavaScript来向连接写入或从中接收数据。
WebSocket优点:
一个web客户端只需要建立一次TCP连接
WebSocket服务端可以向web客户端进行发送数据
2、前端通过在JavaScript中通过onopen,onmessage,onerror,onclose来响应服务端
onopen 建立连接后触发
onmessage 收到消息后触发
onerror 发生错误时触发
onclose 关闭连接时触发
前端代码
image.jpg

后端代码
image2.jpg

遇到的问题
一个客户端发送的数据怎么通过服务器端广播给其他客户端(客户端与客户端之间的信息交流)
解决方案:
使用一个map集合来接受所有连接的客户端
联想map集合的特点,通过key---value的方式存储数据
var users map[int]websocket.COnn = make(map[int]websocket.Conn)
让key的类型位int来记录连接的用户conn *websocket让key值从0开始每次连接一个客户端进行加一操作
val i int
for i = 0; i < int长度; i++{
}
通过for循环来完成广播功能

Last modification:October 22nd, 2019 at 09:45 pm
如果觉得我的文章对你有用,请随意赞赏