gpt4 book ai didi

javascript - socket.io 不刷新数据

转载 作者:行者123 更新时间:2023-12-01 03:00:33 25 4
gpt4 key购买 nike

我试图在每次文件更改时使用 socket.io 显示文件大小。这是我的 js 代码。

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
var fs = require("fs");
var filesize;
var filename = 'D:\\test.txt';

fs.watchFile(filename, function() {
fs.open(filename, 'r', function(err, fd) {
fs.stat(filename, function(err, stat) {
if(err) { console.log('error'); }
console.log(stat.size);
filesize = stat.size;
});
})
});

io.on('connection', function(socket){
console.log('A user connected');
socket.emit('testerEvent', { description: prntarr});
socket.on('clientEvent', function(data){
console.log(data);
});
socket.on('disconnect', function () {
console.log('A user disconnected');
});

});

http.listen(3000, function(){
console.log('listening on localhost:3000');
});

问题是,套接字没有刷新数据,但控制台显示更改的大小。仅当我重新加载页面时它才会刷新。请建议我在哪里犯了错误以及如何修复它。

提前致谢。

最佳答案

您需要在 fs.watchFile() 回调中执行 socket.emit() 。当文件此时发生更改时,您不会发出任何内容

<小时/>
  • 当用户连接时,将其socket推送到数组中。
  • watchFile 回调中,迭代连接的套接字数组和 .emit() 您想要发送的内容。
  • 不要忘记从中删除对所有已断开连接的socket进行数组

关于javascript - socket.io 不刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com