我将图像上传到服务器时遇到问题,当我这样做时,我想将此事件发送到房间" 1室"
`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>
SERVER
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);
});
答案 0 :(得分:2)
改变这个:
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
对象,因此总是如此。
答案 1 :(得分:0)
io.sockets.in("1room").emit('image_added','OK')
删除连接事件。