//异常处理ws.onerror = function(e) {console.log("WebSocket Error: " , e);};复制代码
5.1.4 Close不言而喻,当连接关闭的时候回触发这个事件,对应onclose方法,连接关闭之后,服务端和客户端就不能再收发消息 。当然你可以调用close方法断开与服务端的链接来触发onclose事件,
ws.onclose = function(e) {console.log("Connection closed", e);};复制代码
5.2 WebSocket事件和方法:5.2.1 send一旦在服务端和客户端建立了全双工的双向连接,可以使用send方法去发送消息,//发送一个文本消息 ws.send("Hello WebSocket!");
当连接是open的时候send()方法传送数据,当连接关闭或获取不到的时候回抛出异常 。
注意:必须是open之后才可以send数据
var ws = new WebSocket("ws://echo.websocket.org")ws.onopen = function(e) {ws.send("Initial data");}复制代码
如果想通过响应别的事件去发送消息,可以检查readyState属性的值为open的时候来实现 。
function myEventHandler(data) {if (ws.readyState === WebSocket.OPEN) {//open的时候即可发送ws.send(data);} else {// Do something else in this case.}}复制代码
发送二进制数据:
// Send a Blobvar blob = new Blob("blob contents");ws.send(blob);// Send an ArrayBuffervar a = new Uint8Array([8,6,7,5,3,0,9]);ws.send(a.buffer);复制代码
Blob对象和JAVAScript File API一起使用的时候相当有用,可以发送或接受文件,大部分的多媒体文件,图像,视频和音频文件 。这一章末尾会结合File API提供读取文件内容来发送WebSocket消息的实例代码 。
5.2.2 close()使用close方法来关闭连接,如果连接以及关闭,这方法将什么也不做 。调用close方法只后,将不能发送数据 。ws.close();
六、 websocket服务端基于ws的搭建1.简单安装安装ws模块,npm install ws ws:是nodejs的一个WebSocket库,可以用来创建服务 。github.com/websockets/…
WebSocket协议定义了两种URL方案,WS和WSS分别代表了客户端和服务端之间未加密和加密的通信 。WS(WebSocket)类似于Http URL,而WSS(WebSocket Security)URL 表示连接是基于安全传输层(TLS/SSL)和https的连接是同样的安全机制 。
2.服务端server.js配置在项目里面新建一个server.js,创建服务,指定8181端口,将收到的消息log出来 。
var WebSocketServer = require('ws').Server,wss = new WebSocketServer({ port: 8181 });wss.on('connection', function (ws) {console.log('client connected');ws.on('message', function (message) {console.log(message);});});复制代码
服务端完整代码如下:
var WebSocket = require('ws').Server;let wss = new WebSocket({port:8181})// wss 继承eventEmitterwss.on('connection',function(ws){//链接成功console.log('建立链接')// 监听客户端发送的信息ws.on('message',function(data){console.log(data);//单一:谁给我发,我就给谁发ws.send('hello' + data )//群发})ws.on('close',function(){console.log('关闭链接')})});复制代码
3.客户端client.html建立WebSocket链接我们需要通过调用WebSocket构造函数来创建一个WebSocket连接,构造函数会返回一个WebSocket实例,可以用来监听事件 。这些事件会告诉你什么时候连接建立,什么时候消息到达,什么时候连接关闭了,以及什么时候发生了错误 。
WebSocket的构造函数需要一个URL参数和一个可选的协议参数(一个或者多个协议的名字),协议的参数例如XMPP、SOAP(Simple Object Access Protocol)或者自定义协议 。而URL参数需要以WS://或者WSS://开头,例如:ws://www.websocket.org
在页面上建立一个WebSocket的连接 。用send方法发送消息 。
var ws = new WebSocket("ws://localhost:8181");ws.onopen = function (e) {console.log('Connection to server opened');}function sendMessage() {ws.send($('#message').val());}复制代码
具体完整代码如下:
<input class="form-control" type="text" name="message" id="message"placeholder="Type text to echo in here" value=https://www.isolves.com/it/cxkf/bk/2020-10-14/"" />
推荐阅读
- WebSocket心跳检测和重连机制
- 如何用 OBS 和 WebSockets 播放视频流
- websocket连接太多导致服务器卡顿怎么办?一招轻松实现横向扩展
- WebSocket 协议初探
- 网页聊天客服是如何制作的?使用WebSocket技术!
- 如何在小程序中实现 WebSocket 通信
- PHP实时消息推送关于websocket技术
- WebSocket的基本使用
- 不懂风格、怎能会穿?8种“风格穿搭”解析,值得精读的穿衣干货
- WebSocket 通信过程与实现