在 Express 中实现长连接

在 Express 中实现长连接


如果想要在 Express 中实现长连接,可以考虑使用以下方法之一:

1、使用 WebSocket

WebSocket 是一种在 Web 应用程序中实现实时双向通信的协议。它支持长连接的特性,可以使客户端和服务器在应用程序启动时建立连接,并一直保持连接状态直到应用程序终止。你可以使用 ws 模块来创建 WebSocket 服务器或客户端,然后通过 Express 中间件的形式来将 WebSocket 请求与普通 HTTP 请求一起处理。下面是一个使用 WebSocket 的例子:

const express = require('express');
const app = express();
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  console.log('WebSocket connected');

  ws.on('message', (message) => {
    console.log(`Received message: ${message}`);
    ws.send(`Server says: ${message}`);
  });

  ws.on('close', () => {
    console.log('WebSocket disconnected');
  });
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('App listening on port 3000');
});

2、使用 SSE

SSE(Server-Sent Events)是一种 HTML5 新增的传输格式,可以在客户端和服务器之间实现长连接。与 WebSocket 不同,SSE 仅支持服务器向客户端的单向通信。你可以使用 sse-stream 模块来创建 SSE 服务,然后通过 Express 中间件的形式来将 SSE 请求与普通 HTTP 请求一起处理。下面是一个使用 SSE 的例子:

const express = require('express');
const app = express();
const sse = require('sse-stream');

app.get('/events', (req, res) => {
  const stream = sse(res);

  const intervalId = setInterval(() => {
    stream.write({ event: 'message', data: 'Hello, world!' });
  }, 1000);

  req.on('close', () => {
    clearInterval(intervalId);
  });
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('App listening on port 3000');
});

以上两种方法都可以用来实现长连接,具体使用哪种方法取决于你的需求。如果你需要实现双向通信,则应该选择 WebSocket;如果你只需要服务器向客户端发送消息,则可以选择 SSE。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值