gpt4 book ai didi

javascript - 使用 Node js 和 socket.io 不会在客户端上触发事件

转载 作者:行者123 更新时间:2023-12-01 03:57:19 26 4
gpt4 key购买 nike

当我将图像上传到服务器时遇到问题,当我这样做时,我想将此事件发送到房间“1room”

 `io.sockets.in("1room").emit('image_added','OK');`

问题是,该事件不会在客户端上触发,但是如果我重新加载页面,则会触发该事件。

HTML

 <form ref='uploadForm' 
id='uploadForm'
action='http://localhost:3000/upload'
method='post'
encType="multipart/form-data">
<input type="file" name="sampleFile" />
<input type='submit' value='Upload!' />
</form>

服务器

io.sockets.on('connection', function(socket){

socket.join("1room");

});

app.post('/upload', function(req, res) {

if (!req.files)
return res.status(400).send('No files were uploaded.');

let sampleFile = req.files.sampleFile;

sampleFile.mv('/xampp2/htdocs/pic.jpg', function(err) {

if (err)
return res.status(500).send(err);

if (res.status(200)){
io.on('connection', function(socket){
io.sockets.in("1room").emit('image_added','OK');
});

}

});

});

客户

socket.on('image_added', function(status) {

alert(status);

});

最佳答案

更改此:

 if (res.status(200)){
io.on('connection', function(socket){
io.sockets.in("1room").emit('image_added','OK');
});
}

对此:

 res.status(200);
io.sockets.in("1room").emit('image_added','OK');

您不能输入 io.on('connection', ...)里面 app.post()你也不会愿意。处理该路由时不会发生该事件。相反,您只想使用 io.sockets.in("1room").emit('image_added','OK'); 向该房间中的所有连接客户端广播。

此外,if (res.status(200)) 没有任何意义。因为从 res.status() 开始,这始终是正确的。只返回 res对象。

关于javascript - 使用 Node js 和 socket.io 不会在客户端上触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42536315/

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