gatewayworker里面看到:
// 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调
$gateway->onConnect = function($connection)
{
$connection->websocketType = Workerman\Protocols\Websocket::BINARY_TYPE_ARRAYBUFFER;
}
如果启用gzip压缩,则这里设置成BINARY_TYPE_ARRAYBUFFER,不过设置后,就变成这个用户的连接永久都是这个传输类型了,对于小文本,几个字符串的那种,想着就没必要gzip压缩了,请问是否能够在传输小文本的时候,动态改变这个$connection->websocketType,变为默认的UTF8字符串传输呢?传输大文本如几十KB那种,再通过gzip压缩,动态设置为BINARY_TYPE_ARRAYBUFFER
另外如果可以动态改变的话,请问如何操作,使得H5页面js,能够做到这种通讯呢?
还请各位高手能够指点一下,谢谢~
开两个不同的gateway,分别监听不同的端口,即对应了不同的 $connection->websocketType.
BINARY_TYPE_ARRAYBUFFER本身也是可以传输json的
你在web客户端转一下就可以
var dataStrJson = String.fromCharCode.apply(null, new Uint8Array(e.data));
var data = JSON.parse(dataStrJson);
怎么解析服务器端发送的过来的数据呢? Binary Frame (Opcode 2)
使用html5的Reader的readAsText方法可以解析