Nodejs 使用和 socket.io 搭建推送服务,后端如何构建?
你似乎什么都不懂,先去了解什么是 socket.io 再说
那你既然知道 websocket 那你就应该知道 websocket 是不用轮询的,只要你连接一建立,那么服务端就可以往客户端推送消息,直接写就可以了。完全又你服务端决定,这个还要什么轮询
需要推送就服务端直接推送了啊
我的实现场景是这样的,服务端什么时候去推送呢?因为数据是实时的。比如全网用户累计的积分,金币之类的东西。
你在服务端实现一个 callback 啊,你数据出来了就调用那个 callback , callback 里面进行推送操作
场景是前端需要获得实时数据,这个数据每秒都在变化,那后端是不是每秒都要推送?没有接触过 nodejs ,请指点一下。
这是我 server 端的代码:
io.on(‘connection’, function (socket) {
socket.emit(‘news’, { hello: ‘world’ });
socket.on(‘my other event’, function (data) {
console.log(data);
});
});
这是 client 端代码:
var socket = io.connect(‘http://localhost:3000’);
socket.on(‘news’,function(data){
console.log(data);
socket.emit(‘my other event’,{my:‘data’});
});
现在前端已经可以获取到{hello:‘world’}这个 json ,那么我如何保证实时推送?
socket.io 有内存泄漏
那现成的来用啊 jpush 啥的
严重么
项目要自己实现哇
严重 每天重启服务器
额,那有没有什么靠谱的方案推荐
有数据就调用 socket.emit 发送给客户端呗
对 node 不是很熟,但是如果上层 api 的底层用到 epoll 等异步非阻塞的 io 的话,一半都能做到推送吧,轮询是操作系统内核在做的事情
可以直接 emqtt.io…
嗯 可以试试 emqtt 他支持 MQTT 协议、 sockjs 协议、 stomp 协议,可以用到网页、手机、 pc 都可以,值得一试
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方便,GoEasy 就挺不错的,我昨天试了一下,代码简洁易懂,几分钟我就洗了一个自己的实时推送功能;官网: http://goeasy.io/
在 Node.js 中使用 Socket.io 搭建推送服务,后端构建主要包括以下几个步骤:
-
初始化项目: 首先,你需要初始化一个 Node.js 项目,并安装必要的依赖。
mkdir push-service cd push-service npm init -y npm install express socket.io
-
创建服务器: 使用 Express 和 Socket.io 创建一个服务器。
const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const app = express(); const server = http.createServer(app); const io = socketIo(server); io.on('connection', (socket) => { console.log('a user connected'); socket.on('disconnect', () => { console.log('user disconnected'); }); socket.on('message', (msg) => { console.log('message: ' + msg); io.emit('message', msg); // 广播消息给所有客户端 }); }); const PORT = process.env.PORT || 3000; server.listen(PORT, () => console.log(`Server running on port ${PORT}`));
-
运行服务器: 保存上述代码为
server.js
,然后运行服务器。node server.js
-
前端连接: 前端代码使用 Socket.io 客户端库连接到服务器,并处理接收到的消息。
<script src="/socket.io/socket.io.js"></script> <script> const socket = io(); socket.on('message', (msg) => { console.log('message: ' + msg); }); socket.emit('message', 'Hello Server!'); </script>
这样,你就完成了一个简单的基于 Node.js 和 Socket.io 的推送服务后端构建。