swoole与浏览器js进行二进制websocket数据传输

swoole与浏览器js进行二进制websocket数据传输

<a href='/tag/swoole.html'>swoole</a>与浏览器js进行二进制websocket数据传输

我们可能看过websocket的很多连接示例,大部分都是明文发送方式,其实websocket支持更高效的二进制binary传输方式,今天我们来看看如何在浏览器端使用websocket与swoole的websocket服务端进行二进制数据通讯。

一、浏览器端js传输二进制websocket数据

首先是js浏览器端,如果要使用二进制进行websocket数据传输,那么就要将websocket的binaryType设为arraybuffer,并且如果传输字符串,还要将字符串转成二进制arraybuffer进行传输,完整的html端代码如下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
    <title>BFW NEW PAGE</title>

    <script type="text/javascript">

        // ArrayBuffer转为字符串,参数为ArrayBuffer对象
function ab2str(buf) {
   return String.fromCharCode.apply(null, new Uint8Array(buf));
}

// 字符串转为ArrayBuffer对象,参数为字符串
function str2ab(str) {
    var buf = new ArrayBuffer(str.length); // 每个字符占用1个字节
    var bufView = new Uint8Array(buf);
    for (var i=0, strLen=str.length; i<strLen; i++) {

         bufView[i] = str.charCodeAt(i);
    }
    return buf;
}

        var ws = new WebSocket('ws://web.debug.only.bfw.wiki:9502')
        ws.binaryType = 'arraybuffer';
        ws.onopen = function() {
            // 发送 Hello 消息
         ...

点击查看剩余70%

{{collectdata}}

网友评论0