Swoole基础——04 Websocket


定义

Websocket是基于TCP的一种新的网络协议。

它实现了浏览器与服务器全双工通信——允许服务器主动发送信息给客户端。


为什么需要websocket?

1)HTTP的通信,只能由客户端发起;

2)websock有以下特点:

  • 建立在TCP协议上
  • 性能开销小,通信高效
  • 客户端可以与任意服务器通信
  • 协议标识符ws wss
  • 持久化网络通信协议(长链接)



使用websocket

WebSocket服务器是建立在Http服务器之上的长连接服务器,客户端首先会发送一个Http的请求与服务器进行握手。

握手成功后会触发onOpen事件,表示连接已就绪,onOpen函数中可以得到$request对象,包含了Http握手的相关信息,如GET参数、Cookie、Http头信息等。



(1) 创建websocket对象

$ws = new swoole_websocket_server(string $host, int $port = 0);



(2)完成连接事件(可选)

当WebSocket客户端与服务器建立连接并完成握手后,会回调此函数。

$ws->on('open', function ($ws, $request) {
   
	...
});



(3)收到客户端数据事件(必选)

$ws->on('message', function ($ws, $frame) {
   
	...
});

$frame 是swoole_websocket_frame对象,包含了客户端发来的数据帧信息。

详情请看下图:
在这里插入图片描述



(4)推送数据到客户端

// 第一种模式1.7.11+可用
$ws->push(int $fd, string $data, int $opcode = 1, bool $finish = true);

// 第二种模式4.2.0+可用
$ws->push(obj $da
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值