连接后忽略服务器端的socket.emit? [英] socket.emit on sever side is ignored after connection?
问题描述
我正在尝试使我的代码功能,以便在io连接上,我之后有一个 socket.emit
,它保存了我的 server.js
到 client.js
。
I am trying to make my code function so that on a io connection, i have a socket.emit
right afterwards which saves a variable from my server.js
to a client.js
.
奇怪的是,当我在学校台式计算机上工作时,代码运行得很好,但是一旦我将文件传输到我的家用桌面,代码就没有功能了正确
Strangely, when I was working on a school desktop computer, the code was working perfectly fine, but once I transferred the files to my home desktop, the code did no function properly
从我的应用程序运行代码时,客户端上的
未发生 console.log
.js
When the code is run from my application, the console.log
on client.js
does not occur
相关代码:
server.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');
}
客户端。 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>
推荐答案
在<$ c $之外移动 socket.on('saveUser',...)
c> $(document).ready()然后把它放进去建立socket.io连接后立即。
Move the socket.on('saveUser', ...)
outside the $(document).ready()
and put it right after you establish the socket.io connection.
如果'saveUser'
消息在文档准备好之前到达,则在安装时不会安装事件处理程序消息到了,你会错过它。
If the 'saveUser'
message arrives before the document is ready, you will not have an event handler installed when the message arrives and you will miss it.
这篇关于连接后忽略服务器端的socket.emit?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!