Node.js 套接字io,无法获取或发出消息

Node.js 套接字io,无法获取或发出消息,node.js,sockets,socket.io,Node.js,Sockets,Socket.io,我想为我的一个项目尝试socket.io,连接已建立,但我无法在服务器和客户端之间发送或接收消息 /***************************** * NodeJs server *****************************/ const express = require('express'); const app = (module.exports = express()); // Listen the server const server = app.liste

我想为我的一个项目尝试socket.io,连接已建立,但我无法在服务器和客户端之间发送或接收消息

/*****************************
* NodeJs server
*****************************/
const express = require('express');
const app = (module.exports = express());
// Listen the server
const server = app.listen(app.get(port), function(){ ... })
let io = require('socket.io').listen(server);
// Listen socket
io.on('connection', function(socket){
    console.log('your are connected to the chat');
    socket.on('chatmessage', function(msg){
        console.log(msg);
    })
})
下面是客户端部分,它位于我的本地计算机上,这只是一个包含socket.js的简单html文件:

/*****************************
* Client part
*****************************/
<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>...</head>
    <body>
        <div id="sendChat">Click here</div>
    </body>
    <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
    <script>
        // with my remote ip
        var chat = io.connect('http://x.x.x.x:5001');
        var btn = document.getElementById('sendChat')
        btn.addEventListener('click', function(){
            console.log('i hit the button');
            chat.emit('chatmessage', 'valeur du chat');
        })
    </script>
</html>
/*****************************
*客户部分
*****************************/
...
点击这里
//用我的远程ip
var chat=io.connect('http://x.x.x.x:5001');
var btn=document.getElementById('sendChat')
btn.addEventListener('click',function(){
log('i hit the button');
发出('chatmessage','valeur du chat');
})
有了这段代码,当我打开客户端时,我的服务器控制台会输出我:“您的连接到聊天室了”。但是,当我从客户端点击“sendChat”按钮(客户端控制台输出“i hit the button”)开始发出消息时,我在服务器部件上没有收到任何消息。 因此,为了说明服务器控制台:

有人能帮我吗? 注意:有时我也会收到这样的消息:get/socket.io/?EIO=3&transport=polling&t=1532094068991-10404 9.377 ms-21


谢谢。

您似乎正在客户端中使用v1.2。我猜这不是您在服务器上运行的版本?您需要同时运行相同的版本

您可以通过以下方式更改客户端代码:

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> 

为此:

<script src="/socket.io/socket.io.js"></script> 


然后,客户机将自动使用与服务器相同的版本,即使在您更新服务器时也是如此。路由
/socket.io/socket.io.js
自动内置到socket.io服务器代码中,因此您不需要任何额外的文件或路由即可“正常工作”。这样,无论何时升级服务器,客户端版本都会自动升级(服务器中嵌入了一个客户端)


如果要使用CDN,则必须手动确保socket.io客户端的CDN版本始终与服务器版本完全匹配。

看来您在客户端中使用的是v1.2。您在服务器上运行的是哪个版本?您需要同时运行相同的版本。您可以将您的客户端代码从此
更改为此
,客户端将自动使用与服务器相同的版本,即使在您更新服务器时也是如此。谢谢@jfriend,但是我在哪里可以选择此文件?路由
/socket.io/socket.io.js
自动内置到socket.io的服务器版本中。你不需要任何额外的文件来工作。