我正在尝试向我的客户发送新闻。在连接时,它工作得很好,但由于某种原因broadcast2
它不会得到客户端的任何响应,甚至知道它的相同代码,甚至broadcast2
的console.log正在工作。
问:如何确保broadcast2 emit能够正常工作?
这有效:
socket.on('message', function (data) {
console.log('message gotten');
socket.emit('news', { message: 'xxxx' });
});
这不起作用:
socket.on('broadcast2', function (data) {
console.log("broadcast revieced");
socket.emit('news', { message: 'xxxx' });
});
这是node.js响应:
node.js中的总代码
socket.on('message', function (data) {
console.log('message gotten');
});
socket.on('another-message', function (data) {
socket.emit('not-news', { hello: 'world' });
});
socket.on('broadcast2', function (data) {
console.log("broadcast revieced");
socket.emit('news', { message: 'xxxx' });
});
这在客户端:
var socket = io.connect('mysite:8080');
function sender() {
console.log('sending tester');
socket.emit('sendertester', 2);
}
socket.on('connect',function(){
});
socket.on('tester', function(msg){
console.log("callback");
});
socket.on('news', function(message) {
console.log("INCOMMING NEWS");
console.log(message);
});
更新1:
由PHP发送的broadcast2套接字:
function broadcast($message,$broadcast = 'broadcast2') {
$client = new Client(new Version1X('myurlhidden:8080'));
$client->initialize();
$client->emit($broadcast, ['message' => $message]);
$client->close();
}
更新2:
**问题二:导致我的广播2在客户端加载之前发送,然后客户端连接到节点,这可能是原因吗?
但同时,我已经预加载了包含broadcast2发射器的类。
使用codeigniter框架。**
更新3
我试图通过让两个用户登录来检查我的理论更新2,而用户1尝试执行触发器。用户二没有输出,所以我认为理论被破坏了。
答案 0 :(得分:0)
服务器在连接之前无法向任何套接字发送消息。你必须等到听到收到你发送的东西的东西。
在发出之后我也不会调用close,因为你可能在客户端收到消息之前关闭连接,发出没有等待客户端在返回异步之前接收数据。 / p>
而是让客户端在终止时关闭连接。