连接后忽略服务器端的socket.emit? [英] socket.emit on sever side is ignored after connection?

查看:114
本文介绍了连接后忽略服务器端的socket.emit?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使我的代码功能,以便在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆