服务开发

更新时间:2022-10-31 13:03

WebSocket 服务

开发此类服务前,您需要准备一个 WitFrame 能够访问到的公网地址的网站,请先在“通讯设置”的网站地址中填写真实有效的网站地址。

相关接口见API文档

服务端开发

服务端文件放置在 /www/[app]/[ver]/servers 目录下,文件名首字母大写,且类名必须包含文件名(无扩展名)+ "Server",例如:

Ws.php

class WsServer {
...

WebSocket 服务入口的应用按照 xxxWs() 的命名方式添加方法,见下例:

public function receiveWs($fd, $data, $params) {
...
  • $fd: 为客户端唯一标识符,数字类型
  • $data: 为收到的客户端消息
  • $params: 为建立 WebSocket 连接时(Lib\Ws::GetWsUrl 接口)透传给 WebSocket 服务的参数,可用于校验用户身份等信息
  • WebSocket 服务名为类名+方法名,不带系统后缀,例如此例中服务名为 “ws_receive”

客户端开发

客户端通常为 JS,您可通过 “new WebSocket” 创建一个 wss 的连接并开始通讯。onopen 发送连接成功的消息,onmessage 监听 Lib\Ws::PushMessage() 接口推送的消息

范例:

<script>
    var ws = new WebSocket('{#ws}');
    ws.onopen = function (event) {
    };

    ws.onmessage = function (event) {
        var data = JSON.parse(event.data)
    };
</script>

完整范例见“简易聊天室”

UDP/TCP 服务

相关接口见API文档

服务端开发

服务端文件放置在 /www/[app]/[ver]/servers 目录下,文件名首字母大写,且类名必须包含文件名(无扩展名)+ "Server",例如:

Udp.php

class UdpServer {
...

UDP 服务入口的应用按照 xxxUdp() 的命名方式添加方法

TCP 服务入口的应用按照 xxxTcp() 的命名方式添加方法

见下例:

public function receiveUdp($fd, $data) {
...
  • $fd: 为客户端唯一标识符,数字类型
  • $data: 为收到的上层发来的消息
  • UDP/TCP 服务名为类名+方法名,不带系统后缀,例如此例中服务名为 “udp_receive”

服务端的调用

通过 API 文档提供的方法调用您写的服务端方法,如下:

Lib\Udp::SendRecv('udp_receive', array('id' => $id));

如果您需要服务端返回的数据,请使用 SendRecv,否则可直接使用 Send。
当然,您也可以通过循环语句一次执行多个 Send,然后在后续流程中进行统一的 Recv。