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

标签 javascript jquery node.js socket.io

我正在尝试使我的代码发挥作用,以便在 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/

相关文章:

javascript - D3 工具提示显示嵌套数据集中的值

javascript - 无法让 jQuery .off() 删除事件处理程序

javascript - 使用箭头键导航

javascript - MERN:类型错误:未定义不是对象(评估 'this.props.params.id' )

node.js - 在 Mongoose 中使用 String 进行引用

javascript - 如何在 JavaScript 或 jQuery 中从键/值数组获取值

javascript - 如何使用 Polymer dom-repeat 映射数组

javascript - 合并具有相同键值的 JavaScript 对象并对其进行计数

javascript - jQuery 查找和替换文本

javascript - 如何在 Node.js 中将 MySQL 数据发送到 html(嵌入谷歌地图 api)