WebSockets是网络应用程序中HTTP通信的替代品。它们在客户端和服务器之间提供了一个长期的、双向的通信渠道。
WebSockets是Web应用中HTTP通信的替代方案。
它们在客户端和服务器之间提供了一个长期的、双向的通信渠道。
一旦建立,通道就会保持开放,提供一个非常快速的连接,延迟和开销都很低。
浏览器对WebSockets的支持
所有现代浏览器都支持WebSockets。

WebSockets与HTTP有何不同
HTTP是一种非常不同的协议,也是一种不同的通信方式。
HTTP是一个请求/响应协议:服务器在客户端请求时返回一些数据。
有了WebSockets。
- 服务器可以向客户端发送一个消息,而不需要客户端明确请求什么。
- 客户端和服务器可以同时相互交谈
- 发送消息所需的数据开销非常小。这意味着低延迟的通信。
WebSockets非常适用于实时和长期的通信。
HTTP非常适用于偶尔的数据交换和由客户端发起的互动。
HTTP的实现要简单得多,而WebSockets需要的开销要多一点。
安全的WebSockets
始终使用安全的、加密的WebSockets协议,wss:// 。
ws:// 指的是不安全的WebSockets版本(WebSockets的 ),由于明显的原因,应该避免使用。http://
创建一个新的WebSockets连接
const url = 'wss://myserver.com/something'
const connection = new WebSocket(url)
connection 是一个WebSocket对象。
当连接成功建立时,open 事件被触发。
通过给connection 对象的onopen 属性分配一个回调函数来监听它。
connection.onopen = () => {
//...
}
如果有任何错误,onerror 函数回调被触发。
connection.onerror = error => {
console.log(`WebSocket error: ${error}`)
}
使用WebSockets向服务器发送数据
一旦连接被打开,你就可以向服务器发送数据。
你可以在onopen 回调函数内方便地这样做。
connection.onopen = () => {
connection.send('hey')
}
使用WebSockets从服务器接收数据
用onmessage 上的回调函数进行监听,当收到message 事件时就会调用该函数。
connection.onmessage = e => {
console.log(e.data)
}
在Node.js中实现一个WebSockets服务器
ws是一个用于Node.js的流行的WebSockets库。
我们将用它来建立一个WebSockets服务器。它也可以用来实现一个客户端,并使用WebSockets在两个后端服务之间通信。
使用以下方法轻松地安装它
你需要写的代码非常少。
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 })
wss.on('connection', ws => {
ws.on('message', message => {
console.log(`Received message => ${message}`)
})
ws.send('ho!')
})
这段代码在8080端口(WebSockets的默认端口)创建了一个新的服务器,并在建立连接时添加了一个回调函数,向客户端发送ho! ,并记录它收到的消息。
在Glitch上看一个实时的例子
这里有一个WebSockets服务器的实时例子:https://glitch.com/edit/#!/flavio-websockets-server-example
这是一个与服务器互动的WebSockets客户端:https://glitch.com/edit/#!/flavio-websockets-client-example