连接后忽略服务器端的socket.emit?

时间:2018-04-10 07:19:32

标签: javascript jquery node.js socket.io

我正在尝试设置我的代码功能,以便在io连接上,我之后有一个socket.emit,这会将变量从server.js保存到client.js

奇怪的是,当我在学校台式计算机上工作时,代码运行得非常好,但是一旦我将文件传输到我的家用桌面,代码就无法正常运行

从我的应用程序运行代码时,console.log上的client.js不会发生

相关代码:

server.js

var http = require('http').Server(app); 
var path = require('path');  
var io = require('socket.io')(http);
var userLog = io.of('/logged');
userLog.on('connect', function(socket) {
// Send current user to client
socket.emit('saveUser', ({user:currentUser}))
console.log(currentUser + ' has connected');
}

client.js:

$(document).ready(function() {

   var me;
   socket.on('saveUser', function(data) {
    console.log(data)
    console.log(data[0])
    me = data.user;
    console.log("i am " + me);
   })
}

home.ejs

<script src="./socket.io/socket.io.js"></script>
<script>var socket = io('/logged');</script>
<script src="js/jquery.min.js"></script>
<script src="js/client.js"></script>

1 个答案:

答案 0 :(得分:1)

socket.on('saveUser', ...)移到$(document).ready()之外,并在建立socket.io连接后立即将其放置。

如果在文档准备好之前收到'saveUser'消息,则在消息到达时您将不会安装事件处理程序,您将错过它。