express 下搞一个 websocket 长连接

 安装模块

npm i  express

npm i  express-ws

新建文件app.js

先安排源码  监听端口 7777

var express = require('express')
var app = express()
require('express-ws')(app)

var port = 7777
var clientObject = {}
app.ws('/', (client, req) => {
    // 连接
    var key = req.socket.remoteAddress + "_" +  req.socket.remotePort
    clientObject[key] = {
        cli:client,
        heartBeat:1,
    }
    // 消息
    client.on('message', (message) => {
        client.send("收到你的消息了" + message)
    })
    // 关闭
    client.on('close', () => {
        var key = req.socket.remoteAddress + "_" +  req.socket.remotePort
        if(clientObject[key]){
            delete clientObject[key]
        }
    });
    // 错误
    client.on('error', () => {
    });
})

app.get('/', (req, res) => {
    res.send("hello 2023");
});
app.listen(port);


// 心跳
setInterval (() => {
    var time = Date.now()
    for(var key in clientObject){
        var client = clientObject[key].cli
        var heartBeat = clientObject[key].heartBeat
        clientObject[key].heartBeat += 1
        try {
            var sData = {
                rspdata:{
                    heartBeat:heartBeat,
                    time:time,
                },
            }
            client.send(JSON.stringify(sData))
        } catch(e) {
        }
    }
}, 1000*3);

app.get('/', (req, res) => {

    res.send("hello 2023");

});

测试下网页的显示 

再搞个模块的客户端 测下心跳

Websocket在线测试-Websocket接口测试-Websocket模拟请求工具

再试试前端主动发消息的

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 07:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 07:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 07:52:02       87 阅读
  4. Python语言-面向对象

    2023-12-15 07:52:02       96 阅读

热门阅读

  1. Crow:基于req.rul查找路由Rule对象及匹配参数

    2023-12-15 07:52:02       63 阅读
  2. Android Studio(Flutter)常用快捷键

    2023-12-15 07:52:02       50 阅读
  3. GitHub 深度解析:高级功能和最佳实践

    2023-12-15 07:52:02       56 阅读
  4. uniapp使用u-search以及相关api

    2023-12-15 07:52:02       56 阅读
  5. docker容器引擎

    2023-12-15 07:52:02       45 阅读
  6. KVO(键值观察)

    2023-12-15 07:52:02       69 阅读
  7. Visual Studio(VS)常用快捷键(最详细)

    2023-12-15 07:52:02       47 阅读
  8. C语言—每日选择题—Day48

    2023-12-15 07:52:02       54 阅读
  9. 【C++】实现一个数组均分函数

    2023-12-15 07:52:02       60 阅读
  10. 14.Spring2.7.x 整合 Elasticsearch7.17

    2023-12-15 07:52:02       50 阅读
  11. 【云原生kubernets】存储管理与应用

    2023-12-15 07:52:02       67 阅读