我正在开发一个带有socket.io/koa的iOS应用程序(https://github.com/koajs/koa)服务连接。为了测试我使用的thor(https://github.com/observing/thor)。问题是,我的socket.io服务不会返回任何内容。当我查看thors的响应时,我发现有一个连接,但没有来自服务的回调。这是我构建和测试socket.io服务的代码:
var server = require('http').Server(app.callback()),
io = require('socket.io')(server);
io.on('connection', function(socket) {
socket.emit('news', { hello: 'world' });
console.log('it works.');
});
在我看来,控制台上应该有一个日志,在我的客户看来应该写上"{hello:‘world’}"。考拉有问题吗?还是我做错了什么?
如果在启动应用程序的终端上看不到"它正常工作",则没有套接字或web套接字连接到服务器应用程序。
在你的应用程序不起作用之前,我不会尝试使用Thor来测试Koa。Koa不稳定。
看看你的代码,我想你想做一些类似的事情:
app.io.route('news', function* (next, data){
console.log("Server terminal output for client emited event news: ",data);
this.emit('ok',{news: 'received'});
this.broadcast.emit('news',data);
});
请注意函数后面的星号。这就是与使用Express不同的主要区别。
连接事件在客户端站点上使用:
socket.on('connect', function () {
socket.emit('news',{hello: 'world'});
socket.on('ok',function(data){
console.log('this message is written on browser console',data);
});
})
在客户端站点上没有星号。