跳到主要内容

websocket

简介

使用WebSocket进行网络通讯

  • WebSocket是与http同样处于网络协议中的应用层, 底层通过tcp进行通讯。
  • WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
    • 在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

优点

  • 较少的控制开销。
    • 在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。
  • 更强的实时性。
    • 由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。
    • 相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少
  • 保持连接状态。
    • 与HTTP不同的是,WebSocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。
    • 而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。
  • 更好的二进制支持。
    • WebSocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。
  • 可以支持扩展。
    • WebSocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。
  • 更好的压缩效果。
    • 相对于HTTP压缩,WebSocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。
握手协议
  • WebSocket 是独立的、创建在TCP上的协议。
  • WebSocket 通过 HTTP/1.1 协议的101状态码进行握手。
  • 为了创建WebSocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(Handshaking)
仓库地址

:::

组件接口

FWebSocketBase.gs

ws链接对象的基础功能

函数原型函数作用
int get_W()返回关联的websocket资源
void set_W(int w)设置关联的websocket资源
void bind_value(mixed value)绑定一个关联值
mixed get_bind_value()获取和本对象绑定的值
void enable_debug(bool flag)打开/关闭调试
void set_callback(string type, function callback)设置连接对象的触发事件的回调处理
void run()在当前线程中运行该连接对象
coroutine run_in_thread()在独立的线程中运行该连接对象

FWebSocketClientBase.gs

websocket客户端连接基础组件

函数原型函数作用
void disconnect()断开连接
string remote_address()获取该连接对象的远程地址信息
bool send(mixed payload)发送数据
bool send_ping(string payload = "ping")ping/pong机制中用于发送一个PING包
bool send_pong(string payload = "pong")ping/pong机制中用于发送一个PONG包

websocket.gs

函数原型函数作用
object create_client()创建websocket的客户端连接
object create_server()创建websocket的服务端连接

WebSocketClient.gs

客户侧连接对象

函数原型函数作用
bool is_ws_client()我是websocket client对象
void connect(string uri)连接指定的主机

WebSocketServer.gs

提供websocket连接接入的服务对象

函数原型函数作用
bool is_ws_server()我是websocket server对象
bool listen(int port, bool reuse_addr)开启websocket的监听
bool clients_empty()服务侧连接数量是不是为0

WebSocketServerClient.gs

服务侧连接对象

函数原型函数作用
bool is_ws_server_client()我是websocket server client对象

枚举

WsRole

Ws角色

枚举成员描述
Client
Server
ServerClient

WsEvent

Ws事件

枚举成员描述
Open
Fail
Close
Ping
Pong
Message

WsState

Ws状态

枚举成员描述
connecting0
open1
closing2
closed3