我遇到了让socket.on工作的问题
$('#showmsg').click(function() {
var socket = io.connect('http://localhost:3000');
var msgText = $('#msgtext');
socket.emit('show msg', msgText.val());
});
该代码有效,如使用
所示io.sockets.on('connection', function(socket) {
socket.on('show msg', function(data) {
console.log(data);
});
});
在server.js中,我的主app文件,但在另一个文件中,当我使用代码
时 $(document).ready(function (){
var socket = io.connect();
socket.on('show msg', function(data) {
$('#container').hide();
});
});
什么都没发生。有谁知道如何让这段代码起作用?
答案 0 :(得分:1)
在客户端连接时,必须等待connect
消息,然后才能使用.emit()
发送数据。正如你现在所做的那样,你试图在连接完成之前发送数据,这样数据就会丢失。
请在此处查看客户端示例:http://socket.io/docs/#sending-and-getting-data-(acknowledgements)
答案 1 :(得分:1)
我认为正在发生的事情是,在你的document.ready函数中,你试图调用io.connect(),但是你在套接字连接之前调用show消息。尝试这样做
socket.on('connect', function (){
socket.on('show msg', function(data) {
$('#container').hide();
});
});
答案 2 :(得分:1)
没有任何事情发生,因为你没有发射任何东西。
$(document).ready(function (){
var socket = io.connect('http://localhost:3000');
socket.on('show msg', function(data) {
$('#container').hide();
});
socket.emit('show msg', 'right now I am emitting data');
});