webgl.websocket
简介
WebGL 平台专用的 WebSocket 客户端实现 由于 WebGL 平台不支持原生 WebSocket 库,本模块通过 togs 的 wrapper 调用 unity NativeWebSocket 封装的 JavaScript WebSocket API, 以实现 WebSocket 客户端功能。
组件接口
websocket.gs
| 函数原型 | 函数作用 |
|---|---|
| bool is_ws_client() | 我是websocket client对象 |
| void connect(string uri) | 连接指定的主机 |
| void disconnect() | 断开连接 |
| string remote_address() | 获取该连接对象的远程地址信息 |
| bool send(mixed payload) | 发送数据 |
| bool send_text(string payload) | 发送文本数据 |
| bool send_binary(buffer payload) | 发送二进制数据 |
| bool send_ping(string payload = "ping") | ping/pong机制中用于发送一个PING包 |
| bool send_pong(string payload = "pong") | ping/pong机制中用于发送一个PONG包 |
| 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() | 在独立的线程中运行该连接对象 |
样例
void on_client_receive(object server, mixed payload)
{
printf("on_client_receive: %O\n", payload);
}
public void test()
{
object client_obj = new_object(WebSocketClient, nil,{});
client_obj.set_callback("message", (: on_client_receive :));
client_obj.set_callback("event", (...){
write($<, "\n");
});
client_obj.connect("ws://localhost:5117");
client_obj.run_in_thread();
write("Client connected.\n");
client_obj.send_text("Hello from client!");
write("Message sent.\n");
client_obj.close();
}