Skip to content
This repository has been archived by the owner on Sep 1, 2020. It is now read-only.

Latest commit

 

History

History
29 lines (20 loc) · 1.18 KB

8.1.3 - onMessage.md

File metadata and controls

29 lines (20 loc) · 1.18 KB

onMessage

当服务器收到来自客户端的数据帧时会回调此函数。

function onMessage(swoole_websocket_server  $server, swoole_websocket_frame $frame)
  • $frame 是swoole_websocket_frame对象,包含了客户端发来的数据帧信息
  • onMessage回调必须被设置,未设置服务器将无法启动
  • 客户端发送的ping帧不会触发onMessage,底层会自动回复pong

swoole_websocket_frame

共有4个属性,分别是

  • $frame->fd,客户端的socket id,使用$server->push推送数据时需要用到
  • $frame->data,数据内容,可以是文本内容也可以是二进制数据,可以通过opcode的值来判断
  • $frame->opcode,WebSocket的OpCode类型,可以参考WebSocket协议标准文档
  • $frame->finish, 表示数据帧是否完整,一个WebSocket请求可能会分成多个数据帧进行发送(底层已经实现了自动合并数据帧,现在不用担心接收到的数据帧不完整)

$data 如果是文本类型,编码格式必然是UTF-8,这是WebSocket协议规定的

OpCode与数据类型

  • WEBSOCKET_OPCODE_TEXT = 0x1 ,文本数据
  • WEBSOCKET_OPCODE_BINARY = 0x2 ,二进制数据