使用Node,Express(和Socket.io?)每1秒更新一次页面

buttface64

我对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Javascript,每 30 秒刷新一次页面,除非出现短语

如何使用ajax和jquery每1秒检索一次php结果

Node.js-在同一端口上使用Socket.io和Express

资源消耗如何使用JQuery每10毫秒更新一次跨度

ReactJS 使用 window.location.reload() 在每次页面访问时启动一次 useEffect

WPF DataGrid XML绑定和1列,每5秒更改一次状态

使用 Node.js、Socket.IO 和 Express 提供静态 JavaScript 文件

Node.js使用Socket.io和Http从Express读取发布数据

如何使用Express和Socket.IO设置Node.JS?

将Socket.io与Node.js,Express和Jade结合使用

使用简单的函数每 1 秒刷新一次标签中的图像

我想每1秒获取一次CPU使用率(所有核心)

如何使用ESP8266每1秒进行一次API调用?

如何使用 RxJava 每 1 秒重新检查一次?

Node.js express 和 net socket 使用 1 个单端口

每 5 秒更改一次图像和链接

我想使用setInterval()每1秒更新一次输出列表,但它会得到无限循环输出

如何每5秒重新加载一次页面?

每X秒刷新一次页面上的数据以获取角度分量

如何更新解析用户对象。我想每10秒更新一次经度和纬度

使用jQuery每3秒显示一次div

使用postDelayed每5秒隐藏一次视图

Node / Socket.io-如何每x分钟发出一次函数/数据

我想使用计时器在 winform 中每 1 秒更改一次背景色

当大约每1秒添加一次新的div时,如何使用Python从Selenium中的div中提取文本?

每 10 秒查询一次 sqlite 与使用超时与 node-cron

使浏览器每说5秒刷新一次页面的最简单方法是什么?

帶有 express 和 socket.io 的 Node js - 無法找到 socket.io.js

如何使用 node.js socket.io 和 express 构建和聊天应用程序(使用群聊和私人消息)?