Node.js 套接字io,无法获取或发出消息
我想为我的一个项目尝试socket.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
/*****************************
* 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的服务器版本中。你不需要任何额外的文件来工作。