我是socket.io的新手,并尝试让它工作。我不知道我在这里做错了什么,因为它似乎超级直白 - 但它不起作用。我想我错过了一些明显的东西。希望其他人可以看到它是什么。
我正在设置socket.io以使用节点/快速服务器。这是我正在尝试的测试的简化版本。
服务器:
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io')(server);
/* socket.io test */
io.on('connection', function(socket){
socket.on('helloServer', function(clientMessage){
console.log("Server got 'helloServer' event");
socket.emit('helloClient', { message : "Hi there. We got your message: " + clientMessage.message});
});
});
客户端有一个函数callServer
,当用户点击UI中的按钮时会调用该函数:
var socket = io.connect('http://localhost');
function callServer() {
socket.emit('helloServer', { message : "Hello server!" });
}
socket.on('helloClient', function (serverMessage) {
console.log(serverMessage.message);
});
当我运行此代码并单击调用callServer
的按钮时,服务器确实获得了事件helloServer
,因为我看到控制台按预期记录消息,但客户端从不收到helloClient
个活动。好像socket.emit
响应函数中的socket.on
调用永远不会被调用。
我做错了什么?
答案 0 :(得分:1)
似乎没问题。但是,为了以防万一,请检查this answer以及向客户端发送数据的所有方法,并尝试使用" io.emit" (发送给所有客户)。或者尝试发送字符串而不是json对象。
我试过这个example here并且它正常工作,只是复制并粘贴。