2014-10-06 74 views
0

我正在使用socket.io/koa(https://github.com/koajs/koa)服務連接處理iOS應用程序。 用於測試我使用thor的服務(https://github.com/observing/thor)。問題是,我的socket.io服務不會返回任何東西。當我看到反應時,我發現存在連接,但沒有服務回調。 這是我的構建和測試socket.io服務代碼:與koa的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.'); 
}); 

在我看來,應該有一個控制檯上的日誌和寫有「{打招呼:‘世界’}」中的觀點我客戶。 koa有問題,還是我做錯了什麼?

+1

什麼版本的'socket.io'?你的客戶代碼是什麼樣的?我一直能夠通過使用客戶端io庫並嘗試連接來判斷socket.io是否正確綁定到了我的服務器實例。或者你可以看看你的服務器連接日誌,在創建客戶端套接字時,socket.io客戶端庫嘗試連接你提供的任何'path:'選項。你看到'/ socketio'或類似的連接嘗試嗎? – jbielick 2015-03-01 20:41:26

回答

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); 
    }); 
}) 

在客戶現場沒有星號。