我正在本地计算机(两个名称空间)上运行socket.io的两个实例。当前的问题是,当尝试从客户端(连接到 any 名称空间)连接时,出现以下错误:
Uncaught ReferenceError: socket is not defined
我在没有自定义命名空间的情况下进行了测试,并且出现了相同的问题。服务器端很好,因为我可以发出事件。
客户端代码如下:
客户
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>
<script>
var socketOptions = {};
socketOptions.transports = ['polling'];
var client = new PlayClient();
var playSocket = io.connect('http://localhost:8044/clients', socketOptions);
playSocket.on('connect', function(socket) {
console.clear();
console.info("CLIENT: Connected.");
socket.on("client:change scene", function(newSceneId) {
console.log(newSceneId);
client.changeScene(newSceneId);
});
});
</script>
看来我只是改写了套接字。因此,基本的故障排除使我进入this answer的行列,以确认这一点。 但是,通过(data)
或其他内容传递的socket
仍未定义,但控制台声明为TypeError: undefined
。
如果我将.on('connect')
更改为.on('connection')
,则由于the socket.io client does not understand the 'connection' event,套接字不再被覆盖,但无法连接或接收任何发出的事件。
对此提供的任何帮助都将不胜感激,因为我似乎陷入了麻烦。
答案 0 :(得分:0)
您似乎在混淆服务器端和客户端事件;他们是完全不同的。每个客户端对象只能连接到单个服务器,而服务器可以接收许多连接
也许尝试类似的事情:
var playSocket = io.connect('http://localhost:8044/clients', socketOptions);
playSocket.on('connect', function() {
console.clear();
console.info("CLIENT: Connected.");
}
playSocket.on("client:change scene", function(newSceneId) {
console.log(newSceneId);
client.changeScene(newSceneId);
});