怎样在JavaScript中实现WebSocket通信?

来源:图像处理网作者:森沢头衔:网络博主
导读:本期聚焦于小伙伴创作的《怎样在JavaScript中实现WebSocket通信?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《怎样在JavaScript中实现WebSocket通信?》有用,将其分享出去将是对创作者最好的鼓励。

WebSocket是HTML5提供的在单个TCP连接上进行全双工通信的协议,在JavaScript中可以直接使用内置的WebSocket对象来实现相关通信逻辑,无需额外引入第三方库。

怎样在JavaScript中实现WebSocket通信?

WebSocket核心使用步骤

1. 创建WebSocket连接

首先需要实例化WebSocket对象,传入服务器的WebSocket地址,地址通常以ws://(非加密)或wss://(加密)开头。

// 创建WebSocket连接,这里使用本地测试地址,实际开发替换为真实服务器地址
const socket = new WebSocket('ws://127.0.0.1:8080/ws');

2. 监听连接状态事件

WebSocket对象提供了多个事件用于监听连接的不同状态,常用的有以下几个:

  • open:连接成功建立时触发
  • message:接收到服务器发送的消息时触发
  • error:连接发生错误时触发
  • close:连接关闭时触发

下面是事件监听的示例代码:

// 连接成功回调
socket.addEventListener('open', function(event) {
  console.log('WebSocket连接已建立');
  // 连接建立后可以主动发送消息给服务器
  socket.send('客户端连接成功,准备接收数据');
});

// 接收服务器消息回调
socket.addEventListener('message', function(event) {
  // event.data就是服务器返回的消息内容,可以是字符串、Blob或ArrayBuffer类型
  console.log('收到服务器消息:', event.data);
});

// 连接错误回调
socket.addEventListener('error', function(event) {
  console.error('WebSocket连接发生错误:', event);
});

// 连接关闭回调
socket.addEventListener('close', function(event) {
  console.log('WebSocket连接已关闭,关闭码:', event.code, '关闭原因:', event.reason);
});

3. 向服务器发送消息

连接建立后,可以调用send()方法向服务器发送数据,支持发送字符串、Blob、ArrayBuffer等类型的数据。

// 发送字符串消息
function sendTextMessage(msg) {
  if (socket.readyState === WebSocket.OPEN) {
    socket.send(msg);
  } else {
    console.warn('当前连接未打开,无法发送消息');
  }
}

// 发送JSON格式数据,实际开发中常用这种方式传递结构化数据
function sendJsonMessage(data) {
  if (socket.readyState === WebSocket.OPEN) {
    socket.send(JSON.stringify(data));
  }
}

// 调用示例
sendTextMessage('这是一条测试消息');
sendJsonMessage({ type: 'chat', content: '你好,服务器', userId: '123' });

4. 关闭WebSocket连接

不需要通信时,可以主动调用close()方法关闭连接,也可以传入关闭码和关闭原因。

// 主动关闭连接,1000表示正常关闭
socket.close(1000, '客户端主动关闭连接');

readyState状态说明

WebSocket对象的readyState属性表示当前连接的状态,不同取值的含义如下:

状态值含义
0CONNECTING,连接还未建立
1OPEN,连接已经建立,可以正常通信
2CLOSING,连接正在关闭过程中
3CLOSED,连接已经关闭或者无法打开

注意事项

实际开发中需要注意几个问题:一是WebSocket连接可能会因为网络波动断开,需要添加重连机制;二是发送消息前最好先判断readyState是否为OPEN状态,避免发送失败;三是如果是加密的wss连接,需要服务器配置对应的SSL证书。如果是需要兼容老版本浏览器,可以考虑使用Socket.IO等库做降级处理,但现代浏览器已经普遍支持原生的WebSocket API。

WebSocketJavaScript实时通信事件监听修改时间:2026-06-05 01:58:05

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。