我有一个奇怪的问题,我刚刚克隆了一个工作完全正常的回购,但由于没有明显的原因,它已经不存在了。
基本上发生的事情是我的socket.io服务器实例在'id'前面加上'/#',使它们与客户端不同。
所以在服务器端我有 /#zG3wncZxZvgRE7LKAAAA ,在客户端我有 zG3wncZxZvgRE7LKAAAA
此外,当客户端收到消息时,可以在框架选项卡上看到:
4undefined
这是我的app.js和config.room = fabio1
:
import config from './config';
import io from './factories/io';
io.on('connection', (socket) => {
socket.join('dmClient');
socket.join(config.room);
console.log('socketId', socket.id);
});
这是我的 /factories/io.js
import socketIo from 'socket.io';
const io = socketIo(3000);
export default io;
这不是我的前端,但它也会触发错误:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Socket.IO Chat Example</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="bower_components/socket.io-client/socket.io.js"></script>
<script>
$(function() {
var socket = io('http://localhost:3000');
socket.on('connect', function () {
console.log(socket.id);
});
});
</script>
</body>
</html>
更多信息:
答案 0 :(得分:0)
事实证明,Socket.io使用1.4。*版本做了一些重大更改我创建了这个issue,其中creole指出了这两个问题Default room name is not socket id和{{3} }
因此,如果我们想要客户端ID ,则在服务器端而不是使用socket.id
,我们需要使用socket.client.id
。
import config from './config';
import io from './factories/io';
io.on('connection', (socket) => {
socket.join('dmClient');
socket.join(config.room);
console.log('socketId', socket.client.id);// this did the trick
});