WebSocket是Web应用中实现双向通信的关键技术,它允许服务器与客户端之间进行实时、低延迟的数据交换。在Node.js环境中,WebSocket的实现主要依赖于第三方库,如`ws`。本实例将详细介绍如何在Node.js中使用`ws`库来创建一个WebSocket服务器,并演示如何与浏览器端进行交互。 我们需要安装`ws`库。在终端中,进入包含`ws.js`文件的目录,然后执行以下命令: ```bash npm install ws ``` 这将安装`ws`库,使你可以在项目中使用WebSocket功能。 `ws.js`文件通常会包含以下基本结构: ```javascript const WebSocket = require('ws'); // 创建WebSocket服务器 const wss = new WebSocket.Server({ port: 8080 }); // 当有新的连接时触发 wss.on('connection', (ws) => { console.log('Client connected'); // 接收客户端发送的消息 ws.on('message', (message) => { console.log(`Received message => ${message}`); // 向所有已连接的客户端广播消息 wss.clients.forEach((client) => { if (client.readyState === WebSocket.OPEN) { client.send(message); } }); }); // 当客户端断开连接时触发 ws.on('close', () => { console.log('Client disconnected'); }); }); ``` 这段代码创建了一个监听8080端口的WebSocket服务器。当有新客户端连接时,会打印“Client connected”。当接收到客户端的消息时,服务器会将该消息广播给所有其他在线客户端。当客户端断开连接时,服务器会显示“Client disconnected”。 为了测试这个WebSocket服务器,你需要在同一个目录下有两个HTML文件,分别在两个不同的浏览器(最好是Chrome,因为其对WebSocket支持良好)中打开。这两个文件可以包含基本的JavaScript代码来创建WebSocket连接并发送/接收消息,例如: ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>WebSocket Test</title> </head> <body> <input type="text" id="messageInput"> <button onclick="sendMessage()">发送</button> <ul id="messageList"></ul> <script> const socket = new WebSocket('ws://localhost:8080'); socket.addEventListener('open', (event) => { console.log('Connected to WebSocket server'); }); socket.addEventListener('message', (event) => { const messageList = document.getElementById('messageList'); const li = document.createElement('li'); li.textContent = event.data; messageList.appendChild(li); }); function sendMessage() { const input = document.getElementById('messageInput'); const message = input.value; input.value = ''; socket.send(message); } </script> </body> </html> ``` 这个HTML文件创建了一个输入框让用户输入消息,一个按钮用于发送消息,以及一个列表用于展示收到的消息。当用户点击“发送”按钮时,JavaScript会通过WebSocket向服务器发送输入的消息,并更新页面上的消息列表。 这个Node.js WebSocket实例展示了如何使用`ws`库创建一个WebSocket服务器,以及如何在浏览器端建立连接、发送和接收消息。在实际应用中,你可以根据需求扩展这些基础功能,例如实现身份验证、错误处理、特定消息类型解析等。通过这种方式,WebSocket能够为实时应用(如聊天室、游戏、股票报价等)提供强大的支持。























- 1

- 火星不良人2021-03-19几乎没啥用,看不到突出点

- 粉丝: 16
- 资源: 113
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 毕业设计-昆虫识别和数目统计系统源码+LW.zip
- 基于Matlab的心电信号ECG去噪处理:结合低通滤波与小波分解去高频噪声、工频干扰及基线漂移解决方案,基于Matlab的心电信号ECG去噪处理:结合低通滤波与小波分解,消除高频噪声、工频干扰及基线漂
- 超轻量级图像中文识别组件 chineseocr_lite 的 DLL 版本(用于 aardio 扩展库,适用于任何支持DLL的语言).zip
- 车牌识别,FPGA,2019全国大学生集成电路创新创业大赛.zip
- 从网易云音乐、QQ音乐等在线音乐平台获取歌单转换成椒盐音乐可识别的歌单格式(方便用户快速跨平台迁移歌单).zip
- 基于Vue框架的校园论坛Web前端设计源码
- 第三届中国软件杯决赛视频分析系统赛题(基于vc++,opencv,svm等算法对视频中的车牌进行定位和识别).zip
- 车牌识别停车计费系统新版源码+说明.zip
- 基于comsol技术的金层二氧化硅SPR传感器的研究与应用,基于COMSOL的金层二氧化硅SPR传感器模拟与性能研究,comsol金层二氧化硅SPR传感器 ,comsol; 金层; 二氧化硅; SPR
- 电子发票识别项目新版源码(可识别电子普票+电子专票).zip
- 点选式验证码识别方案源码.zip
- 电脑QQ截图工具提取版(支持文字提取、图片识别、截长图、qq录屏+默认截图文件名为ScreenShot日期).zip
- 对目标域名进行快速的存活扫描、简单的指纹识别、目录扫描项目源码.zip
- 端到端中文语音识别源码.zip
- 抖音的Autojs人脸识别脚本.zip
- 二维码_条形码扫描、生成_识别工具(仿微信、支付宝).zip


