我正在尝试使我的代码发挥作用,以便在 io 连接上,我有一个 socket.emit
紧接着将一个变量从我的 server.js
保存到一个 client.js
。
奇怪的是,当我在学校的台式电脑上工作时,代码运行得非常好,但是一旦我将文件传输到家里的台式机,代码就无法正常运行
当代码从我的应用程序运行时,client.js
上的console.log
不会出现
相关代码:
服务器.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);
})
}
首页.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>
最佳答案
将 socket.on('saveUser', ...)
移到 $(document).ready()
之外,并在建立套接字后立即放置.io 连接。
如果 'saveUser'
消息在文档准备好之前到达,您将不会在消息到达时安装事件处理程序,您将错过它。
关于javascript - 连接后忽略服务器端的 socket.emit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49747656/