当前位置:首页 > JavaScript

js实现长连接

2026-04-07 10:01:18JavaScript

使用 WebSocket 实现长连接

WebSocket 是 HTML5 提供的一种在单个 TCP 连接上进行全双工通信的协议,适合实现长连接。

创建 WebSocket 连接:

const socket = new WebSocket('ws://your-server-url');

socket.onopen = function() {
    console.log('连接已建立');
    socket.send('Hello Server!');
};

socket.onmessage = function(event) {
    console.log('收到消息: ' + event.data);
};

socket.onclose = function() {
    console.log('连接已关闭');
};

socket.onerror = function(error) {
    console.log('发生错误: ' + error);
};

使用 Server-Sent Events (SSE)

SSE 是 HTML5 的另一种技术,允许服务器向客户端推送数据。

客户端实现:

const eventSource = new EventSource('/sse-endpoint');

eventSource.onmessage = function(event) {
    console.log('收到消息: ' + event.data);
};

eventSource.onerror = function() {
    console.log('连接错误');
};

使用轮询(Polling)模拟长连接

虽然效率较低,但可以在不支持 WebSocket 或 SSE 的环境中使用。

js实现长连接

function poll() {
    fetch('/poll-endpoint')
        .then(response => response.json())
        .then(data => {
            console.log('收到数据: ', data);
            setTimeout(poll, 5000); // 5秒后再次轮询
        });
}

poll();

使用长轮询(Long Polling)

长轮询是传统轮询的改进版本,服务器在有数据时才响应。

function longPoll() {
    fetch('/long-poll-endpoint')
        .then(response => response.json())
        .then(data => {
            console.log('收到数据: ', data);
            longPoll(); // 立即开始下一次请求
        });
}

longPoll();

使用第三方库

Socket.IO 是一个流行的库,封装了 WebSocket 和其他实时通信技术。

安装 Socket.IO:

js实现长连接

npm install socket.io-client

使用示例:

import io from 'socket.io-client';

const socket = io('http://your-server-url');

socket.on('connect', () => {
    console.log('已连接');
});

socket.on('message', (data) => {
    console.log('收到消息: ', data);
});

socket.emit('send-message', { text: 'Hello' });

注意事项

WebSocket 和 SSE 需要服务器端支持,确保服务器已配置相应的端点。

考虑添加心跳机制来保持连接活跃,防止因超时而断开。

在生产环境中应添加错误处理和重连逻辑,提高可靠性。

对于现代浏览器,WebSocket 通常是首选方案,因为它提供最低的延迟和最高的效率。

标签: js
分享给朋友:

相关文章

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…