我对Node.js和Express有点陌生,目前正在一个页面上工作,我希望每1秒(实际上是1250ms)生成(并将消息)(从服务器)发送到客户端页面。当用户访问该站点时,我希望广播最新消息,之后每秒钟都会有新消息出现。换句话说,无论何时连接到服务器,每个用户都将同时在网页上看到相同的消息。
我已经进行了一些搜索,但是很遗憾,没有运气在线玩代码示例。这是一个粗糙的想法来解释:
app.js
'use strict';
var express = require('express');
var app = express();
var http = require( "http" ).createServer( app );
var io = require( "socket.io" )( http );
app.get('/', function (req, res) {
res.sendFile(__dirname + '/public/index.html');
});
http.listen(3000, function(){
/* someFunction to generate new LATESTMESSAGE every 1s */
io.on('connection', function (socket) {
socket.emit('news', { messages: LATESTEMESSAGE })
});
});
我想我需要从生成LATESTMESSAGE的函数中通过socket.io发送消息(生成消息时每1秒钟通过套接字发送一次?)?在这种情况下,我不熟悉如何在不是app.js的页面中要求socket.io(此函数可能是其自己的js文件中的类),因为socket.io需要app和表达(请参见上面的代码)。
感谢您的帮助!我今天花了很多时间思考这个问题,希望得到任何指导或帮助。如果我没有提供足够的信息,请告诉我。
ps上面的代码绝对无法完成所需的工作。只是一个粗略的轮廓,以显示我正在尝试完成的任务
您正在做的事情看起来像半双工通信,即只有服务器将数据发送到客户端,而不是相反。Socket.io是全双工通信,即服务器和客户端相互发送数据。因此,从技术上讲,最适合您的要求的是使用EventStream的服务器发送事件(SSE)。Socket.io可能有点多余。
话虽如此,您想要编写一个中间件,然后将应用程序传递给该中间件。请看一下https://expressjs.com/en/guide/using-middleware.html
基本上,您io
将被传递给中间件函数,因此它们可以访问Socket。并且中间件功能将会导入到您的app.js
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句