服务开发
更新时间: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。