gatewayworker里面看到:
// 當(dāng)客戶端連接上來時(shí),設(shè)置連接的onWebSocketConnect,即在websocket握手時(shí)的回調(diào)
$gateway->onConnect = function($connection)
{
$connection->websocketType = Workerman\Protocols\Websocket::BINARY_TYPE_ARRAYBUFFER;
}
如果啟用gzip壓縮,則這里設(shè)置成BINARY_TYPE_ARRAYBUFFER,不過設(shè)置后,就變成這個(gè)用戶的連接永久都是這個(gè)傳輸類型了,對(duì)于小文本,幾個(gè)字符串的那種,想著就沒必要gzip壓縮了,請(qǐng)問是否能夠在傳輸小文本的時(shí)候,動(dòng)態(tài)改變這個(gè)$connection->websocketType,變?yōu)槟J(rèn)的UTF8字符串傳輸呢?傳輸大文本如幾十KB那種,再通過gzip壓縮,動(dòng)態(tài)設(shè)置為BINARY_TYPE_ARRAYBUFFER
另外如果可以動(dòng)態(tài)改變的話,請(qǐng)問如何操作,使得H5頁面js,能夠做到這種通訊呢?
還請(qǐng)各位高手能夠指點(diǎn)一下,謝謝~
開兩個(gè)不同的gateway,分別監(jiān)聽不同的端口,即對(duì)應(yīng)了不同的 $connection->websocketType.
BINARY_TYPE_ARRAYBUFFER本身也是可以傳輸json的
你在web客戶端轉(zhuǎn)一下就可以
var dataStrJson = String.fromCharCode.apply(null, new Uint8Array(e.data));
var data = JSON.parse(dataStrJson);