You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constWebSocket=require('ws');constwss=newWebSocket.Server({port: 8080});wss.on('connection',(ws)=>{console.log('Client connected');ws.on('message',(message)=>{console.log('Received: '+message);// 在这里你可以对接收到的消息进行处理// 例如,将消息广播给所有连接的客户端wss.clients.forEach((client)=>{if(client!==ws&&client.readyState===WebSocket.OPEN){client.send('Broadcast: '+message);}});});ws.on('close',()=>{console.log('Client disconnected');});});console.log('WebSocket server started at ws://localhost:8080');
面试官:说说对WebSocket的理解?应用场景?
一、WebSocket 是什么?
WebSocket 是一种网络传输协议,位于 OSI 模型的应用层。它允许在单个 TCP 连接上进行全双工通信,实现了客户端与服务器之间的双向数据传输,从而能更好地节省服务器资源和带宽,并达到实时通信的效果。
在传统的 HTTP 协议中,客户端需要不断发送请求以获取服务器的响应数据,这种轮询的方式对服务器和网络资源产生较大的负担。而 WebSocket 的出现改变了这种情况,通过一次握手连接,客户端和服务器之间可以创建持久性的连接,随时进行双向数据交换,大大降低了通信的延迟和资源消耗。
二、WebSocket 的特点
1. 全双工通信
WebSocket 支持全双工通信,允许数据在两个方向上同时传输,客户端和服务器可以实时地发送和接收数据,达到瞬时同步的效果。
2. 二进制帧结构
WebSocket 采用二进制帧结构,与 HTTP 完全不兼容。相比起 HTTP/2,WebSocket 更侧重于实时通信,不像 HTTP/2 那样定义流和多路复用等特性,因为 WebSocket 自身已经是全双工通信,不需要这些特性。
3. 协议名和握手
WebSocket 引入了 ws 和 wss 分别代表明文和密文的 WebSocket 协议,且默认端口使用 80 或 443,与 HTTP 的端口一致。在连接建立时,客户端需要发送协议升级请求并进行握手,服务端返回接受握手请求的响应,完成连接的建立。
4. 优点
三、应用场景
WebSocket 的实时通信特性使得它在许多场景下得到广泛应用:
总的来说,WebSocket 在需要实时通信和即时更新数据的场景下都能发挥出很大的作用,提升用户体验,减少服务器压力,逐渐成为现代 Web 应用中不可或缺的技术之一。
使用
当使用 WebSocket 进行通信时,通常需要在客户端和服务器端分别实现 WebSocket 的功能。下面我将给出一个简单的示例,展示如何使用 JavaScript 在客户端建立 WebSocket 连接并发送和接收消息,以及如何在Node 中创建一个简单的 WebSocket 服务器。
在客户端使用 WebSocket
在上面的示例中,首先我们创建了一个 WebSocket 对象,传入服务器地址
ws://your_server_address
。然后,我们监听 WebSocket 的onopen
事件,当连接建立时会显示连接已经建立。监听onmessage
事件,当接收到消息时会在页面上显示收到的消息。通过输入框和按钮可以向服务器发送消息,点击按钮时调用sendMessage()
函数将输入框中的消息发送给服务器,并将消息显示在页面上。在服务器端使用 WebSocket
在 Node.js 中,你可以使用
ws
模块来创建 WebSocket 服务器。这个模块提供了 WebSocket 的实现,使你能够轻松地创建一个 WebSocket 服务器,并与客户端进行实时通信。下面是使用 Node.js 创建 WebSocket 服务器的代码示例:
首先,确保你已经安装了
ws
模块:然后,创建一个 Node.js 文件
websocket_server.js
,包含以下代码:在上面的代码中,我们使用
ws
模块创建了一个 WebSocket 服务器,监听在本地地址ws://localhost:8080
上。当有客户端连接到服务器时,connection
事件会被触发,并创建一个 WebSocket 实例ws
。然后,我们监听message
事件,当客户端发送消息时会收到该事件,并在控制台上显示接收到的消息。在这个示例中,我们将收到的消息广播给所有连接的客户端,除了发送消息的客户端本身。运行 WebSocket 服务器:
现在,服务器已经在本地地址
ws://localhost:8080
上运行,客户端可以连接到该地址,并与服务器进行实时通信。参考文献
The text was updated successfully, but these errors were encountered: