当前位置:首页 > JavaScript

js 实现websocket

2026-03-02 06:01:30JavaScript

使用原生 JavaScript 实现 WebSocket

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适用于实时应用如聊天、游戏等。以下是实现步骤:

1. 创建 WebSocket 连接

通过 WebSocket 构造函数创建连接,参数为 WebSocket 服务器地址:

const socket = new WebSocket('ws://example.com/socket');

2. 监听连接事件

WebSocket 提供以下事件监听:

  • onopen:连接建立时触发
  • onmessage:接收到消息时触发
  • onerror:发生错误时触发
  • onclose:连接关闭时触发
socket.onopen = function(event) {
    console.log('Connection established');
};

socket.onmessage = function(event) {
    console.log('Message received:', event.data);
};

socket.onerror = function(error) {
    console.error('Error occurred:', error);
};

socket.onclose = function(event) {
    console.log('Connection closed');
};

3. 发送数据

使用 send() 方法发送数据,支持字符串、ArrayBufferBlob 格式:

js 实现websocket

socket.send('Hello, server!');

4. 关闭连接

调用 close() 方法关闭连接:

socket.close();

完整示例代码

const socket = new WebSocket('ws://example.com/socket');

socket.onopen = function() {
    console.log('Connected to server');
    socket.send('Hello, server!');
};

socket.onmessage = function(event) {
    console.log('Server says:', event.data);
};

socket.onerror = function(error) {
    console.error('WebSocket error:', error);
};

socket.onclose = function() {
    console.log('Disconnected from server');
};

// 关闭连接示例
setTimeout(() => {
    socket.close();
}, 5000);

注意事项

  • 协议需使用 ws://(非加密)或 wss://(加密)。
  • 发送数据前需确保连接已建立(readyState === WebSocket.OPEN)。
  • 跨域问题需服务器配置 Access-Control-Allow-Origin
  • 心跳机制可避免连接超时断开。

进阶功能

1. 二进制数据传输

发送 ArrayBufferBlob

js 实现websocket

const buffer = new ArrayBuffer(8);
socket.send(buffer);

2. 自定义协议

通过子协议扩展功能:

const socket = new WebSocket('ws://example.com/socket', ['custom-protocol']);

3. 重连机制

onclose 中实现自动重连:

function connect() {
    const socket = new WebSocket('ws://example.com/socket');
    socket.onclose = function() {
        setTimeout(connect, 1000); // 1秒后重连
    };
}
connect();

通过以上方法,可以快速实现 WebSocket 通信并处理常见场景。

标签: jswebsocket
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li>&l…