HTML5客户端

先上H5客户端的代码

注意我们这里的服务端连接地址为:ws://127.0.0.1:8199/ws

  • 与服务端websocket连接状态保持及信息展示;
  • 接收到websocket的返回信息后回显在界面上;

WebSocket服务端

可以看到,服务端的代码相当简单,这里需要着重说明的是3个地方:

  1. WebSocket方法 websocket服务端的路由注册方式和普通的http回调函数注册方式一样,但是在接口处理中我们需要通过方法(这里直接使用指针对象r.WebSocket())将请求转换为websocket操作,并返回一个WebSocket对象,该对象用于后续的websocket通信操作。当然,如果客户端请求并非为websocket操作时,转换将会失败,该方法会返回错误信息,使用时请注意判断方法的error返回值。
  2. ReadMessage & WriteMessage 读取消息以及写入消息对应的是websocket的数据读取以及写入操作(ReadMessage & WriteMessage),需要注意的是这两个方法都有一个msgType的变量,表示请求读取及写入数据的类型,常见的两种数据类型为:字符串数据或者二进制数据。在使用过程中,由于接口双方都会约定统一的数据格式,因此读取和写入的msgType几乎都是一致的,所以在本示例中的返回消息时,数据类型参数直接使用的是读取到的msgType

HTTPS的WebSocket

如果需要支持HTTPS的WebSocket服务,只需要依赖的WebServer支持HTTPS即可,访问的WebSocket地址需要使用 wss:// 协议访问。以上客户端HTML5页面中的WebSocket访问地址需要修改为:wss://127.0.0.1:8199/wss。服务端示例代码:

示例结果展示

Websocket安全校验

gf框架的websocket模块并不会做同源检查(origin),也就是说,这种条件下的websocket允许完全跨域。

WebSocket聊天室案例

框架示例项目中提供了基于WebSocket的聊天室案例,具体请查看:https://github.com/gogf/gf-demos

WebSocket client 客户端