swoole与浏览器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%
网友评论0