0

我正在开发一个带有 socket.io/koa ( https://github.com/koajs/koa ) 服务连接的 iOS 应用程序。为了测试我正在使用的服务 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'}”。是koa有问题,还是我做错了什么?

4

1 回答 1

0

如果您在启动应用程序的终端上看不到“它可以工作”,则说明您的服务器应用程序没有连接到套接字或 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);
  });
})

在客户端站点上没有星号。

于 2015-04-18T16:21:11.713 回答