当我将图像上传到我的服务器时遇到问题,当我这样做时,我想将此事件发送到房间“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
对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句