我正在尝试使用 socket.io 制作一个聊天应用程序,但我遇到了一个奇怪的情况:我的服务器收到了我发送的消息,但客户端没有。
服务器代码:
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '\\index.html');
});
io.on('connection',function(socket){
socket.on('chat message', function(msg){
io.emit(msg)
console.log('message: ' + msg)
})
})
http.listen(3002,function(){
console.log('listening on 3002');
});
这是客户端的代码:
<script>
$(function () {
var socket = io();
$('form').submit(function(e){
e.preventDefault(); // prevents page reloading
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
console.log(msg)
// $('#messages').append($('<li>').text(msg));
});
});
</script>
#m 是我要发送的消息的输入字段
最佳答案
您必须发出带有一些数据的事件名称:
来自 the docs :
socket.emit(eventName[, …args][, ack])
在服务器上:
io.on('connection',function(socket){
socket.on('chat message', function(msg){
io.emit('newMessage', msg )
// ^^^^^^^^^^ ^^^^
// event name data
console.log('message: ' + msg)
})
})
在客户端:
socket.on('newMessage', function(msg){
console.log(msg)
});
关于javascript - Socket.on() 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040982/