当前位置: 首页 > news >正文

node服务端通过socket.io保持长连接通信示例

本文旨在给出一个node服务端通过socket.io保持长连接通信的示例。

node版本:18.16.1
socket.io及socket.io-client版本:2.1.1

数据发送方服务端代码:

const http = require('http').createServer();
const io = require('socket.io')(http);io.on('connection', (socket) => {console.log('a user connected');socket.on('disconnect', () => {console.log('user disconnected');});setInterval(() => {console.log('send message');io.emit('message', 'a message from server.');}, 5000);
});http.listen(3000, () => {console.log('listening on http://192.168.0.1:3000');
});

数据接收方服务端代码:

const http = require('http').createServer();const io = require('socket.io-client');
let socket = io(`http://192.168.0.1:3000`);socket.on('message', res => {console.log(res);
});http.listen(3001, () => {console.log('listening on http://192.168.0.1:3001');
});

注意在本地运行前,需要把涉及的IP信息替换成本机IP。

2个服务端均成功启动后,在接收方的控制台可以看到发送方传递的消息,即表明通信成功,效果示意图如下:
在这里插入图片描述

如果发送方是https server,则示例需要稍作调整。

数据发送方服务端代码(https):

var fs = require('fs');const options = {key: fs.readFileSync('./ca/cakey.pem'),cert: fs.readFileSync('./ca/cacert.pem')
}const https = require('https').createServer(options);
const io = require('socket.io')(https);io.on('connection', (socket) => {console.log('a user connected');socket.on('disconnect', () => {console.log('user disconnected');});setInterval(() => {console.log('send message');io.emit('message', 'a message from server.');}, 5000);
});https.listen(3000, () => {console.log('listening on https://192.168.0.1:3000');
});

数据接收方服务端代码:

const http = require('http').createServer();const io = require('socket.io-client');
let socket = io(`https://192.168.0.1:3000`, {rejectUnauthorized: false
});socket.on('message', res => {console.log(res);
});http.listen(3001, () => {console.log('listening on http://192.168.0.1:3001');
});

注意数据接收方服务端本身仍然是http服务,但需要与https server建立长连接,此时由于我们使用的是自签证书,因此在建立长连接时需要声明忽略证书校验,也就上面的rejectUnauthorized需要设置为false。

补充证书数据:

cakey.pem

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCt4/3uQFLgyOGa0lFD8Y6QiVALVOwj1dV0ScMwtXskw0YvBqDk
tvW/xHFftmcqHj0/J8rBTcBXnQKPW/mAedE1jObkpUdv5h0VPI/dJ/uuFm/CoZr0
cKFwzY3hOPfNxXj/1wu7RA+eEbZXy1QaGETAb4reIp94gwc500Uvf0yzSwIDAQAB
AoGBAI9RrRW0AFryVjdjhsUoD2eDNOzSBnqWoIJi1TSNLzyikXLq1KsNPMjcYNER
JkApgjNOWacurQvJBbYgiShhvpI2bvnm12cq06Yh7NeWGwlejNXUV7PpvOptPUXD
An1hCyxdBp0eKDkh+ygbnPPsJQPes8sQvhJZ0TokgivEDKtRAkEA5KllwmzABQ8C
PlCQpEcU/Ukp4WNGsd5dBzMgxV5yHqvS4oSOgr4mwl78kLFRb4aS0KqHl7q3ztmp
qOmlQHJjWQJBAMKuOdt4Aec7N6eVD6MGfjfbRW5RVjN/5ScByvKzIkc/UC/nVRMT
kCS/JQQPpVcrD8mKzohiwTARizptb04660MCQBGEvOwZYtjAXp6hk4NSgtQo79F5
xqfH7n6ntyIH61xYM67xEu4HXXbUyirXuvJ9b/AWsI66Wmy5llr/k46NdPkCQBdj
GL49x3TAz2nJZWx/PjB1nfyntsRPC/dIptnLHUYT3A01LCozgnB3qfm363PyT141
16PYwT6GDQTC2sk6GMMCQERslIy4tmWDq4P+Nf5GYV8h3ZaD0OA6GhbdfrozxhyI
KC7GI/hF8XaTAWM8U0Lw/VFVNS3C2WzuAfPFbmoAUI0=
-----END RSA PRIVATE KEY-----

cacert.pem

-----BEGIN CERTIFICATE-----
MIICZjCCAc+gAwIBAgIUCn88IxDVmvZKqgVaCVCPioC7DccwDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMjA3MDUwOTIyNTBaFw0yMjA4
MDQwOTIyNTBaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBAK3j/e5AUuDI4ZrSUUPxjpCJUAtU7CPV1XRJwzC1eyTDRi8G
oOS29b/EcV+2ZyoePT8nysFNwFedAo9b+YB50TWM5uSlR2/mHRU8j90n+64Wb8Kh
mvRwoXDNjeE4983FeP/XC7tED54RtlfLVBoYRMBvit4in3iDBznTRS9/TLNLAgMB
AAGjUzBRMB0GA1UdDgQWBBTzVCK2pDw/w/OfmtAQQHXCvv9NxDAfBgNVHSMEGDAW
gBTzVCK2pDw/w/OfmtAQQHXCvv9NxDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
DQEBCwUAA4GBAJ7jf6ZTGXy5UWgN4nsfg3R/MA/FWbacatUwLrHH5U/vP6oxFY5a
4q7Cth4ayRagU7jF2kz6zZeEL0M+6b9Ysio9DquEbYnhUAnJBRm8l51wHkH5/fwQ
GYoKQlUx8R2vM84lHn/FPZazKOuIoaxSLGwwubn5BnW6N4W+HMbtRNa8
-----END CERTIFICATE-----
http://www.dtcms.com/a/443265.html

相关文章:

  • Super-Resolution Delay-Doppler Estimation for OFDM Passive Radar
  • 九江开发区建设环保局网站贵州住房建设厅官网查询
  • 郑州诺耀科技 - 郑州高端网站建设营销推广网站路径怎么做
  • 招聘网站源码下载岳阳市交通建设投资公司门户网站
  • 单细胞空间--免疫细胞与肾脏细胞的时空相互作用调控自身免疫性肾病中肾小球新月体形成
  • 巨野做网站的网站策划与运营考试题
  • 正品海外购网站有哪些中国十大建筑设计院排名
  • Docker Compose 多容器编排实战
  • 初创公司 建网站网站设计和营销
  • 救援启动!
  • Android 事件分发机制 图解
  • 做网站价钱电脑版qq在线登录网页入口
  • 140、【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(六)
  • 免费网站建设软件大全wordpress禁止中国ip
  • 有界区域上具有常数右端项的泊松方程解的上界估计
  • 做区位分析的地图网站wordpress主题分类目录主题
  • 网站建设实习每天内容手机网站开发 html
  • 手机网站制作案例教育网站建设备案
  • 网站开发时的闭包写法进一步加强区门户网站建设管理办法
  • 计算机网站设计怎么做扬中信息网
  • 专业网站名词解释资讯网站 怎样 增强用户粘度
  • 现代C++——并发编程
  • Dotnet通过OpenAI方式接入DeepSeek
  • 第八课(零基础友好版)|第一次训练模型(Teachable Machine,超详细)
  • 定制制作网站公司建筑模型网站有哪些
  • 【多线程】无锁数据结构(Lock-Free Data Structures)是什么?
  • YOLO入门教程(番外):卷积神经网络—卷积神经网络(LeNet)
  • 哪里可以做寄生虫网站wordpress链接默认是什么样子
  • 网站开发常用插件怎样保存网站资料 做证据
  • 网站经常被挂码泉州seo排名扣费