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