2014-10-08 42 views
0

最近我一直在嘗試將nodejs與我現有的項目集成以確保實時更新提要。因此,我使用了以下YII插件並遵循指令:yii-node-socket不適用於我

https://github.com/oncesk/yii-node-socket

的主機和端口是:bigcat,3001分別和如所提到的我在console.php和main.php配置它們。我啓動的節點服務器和日誌表示,它聽:

Listening bigcat:3001 
Set origin: bigcat:* 

在我的客戶端,我有以下代碼(我創建它作爲一個外部JavaScript):

// create object and connect to web socket server 
var socket = new YiiNodeSocket(); 

socket.on('event.example', function() { 
    console.log('*****Trigger test.event, is a global event, for all clients*****'); 
}); 

socket.onConnect(function() { 
    socket.room('example').join(function (isConnected, numberOfRoomClients) { 
     if (isConnected) { 
      // catch test.event only for this rooom 
      console.log('***Joined into room example: members count [' + numberOfRoomClients + ']*****'); 
      this.on('example.room.event', function (data) { 
       console.log('****WORKING****'); 
      }); 
     } 
    }); 
}); 

我的控制檯該客戶端成功是connected.An在HomeController的測試方法的記錄,我有以下代碼:

$event = Yii::app()->nodeSocket->getFrameFactory()->createEventFrame(); 
$event->setRoom('example'); 
$event->setEventName('example.room.event'); 
$event['type_string'] = 'hello world'; 
$event['type_array'] = array(1, 2, 3); 
$event['type_object'] = array('one' => 1, 'two' => 2); 
$event['type_bool'] = true; 
$event['type_integer'] = 11; 
$event->send(); 

當我調用HomeController的測試方法在另一個瀏覽器,我的客戶應該能夠聽到這個事件,控制檯應該打印出「IT's WORKING」。但是,這並沒有發生。我的日誌顯示以下錯誤:

warn: handshake error INVALID SERVER: server host 127.0.0.1 not allowed for /server 
debug: websocket writing 7::/server:undefined 

服務器端代碼似乎根本不工作。我能否就如何完成這件事得到一些建議。我覺得我很接近,但很遠。

的server.config.js設置爲:

module.exports = { 
    host : 'bigcat', 
    port : parseInt('3001'), 
    origin : 'bigcat:*', 
    allowedServers : ["127.0.1.1"], 
    dbOptions : {"driver":"dummy","config":[]}, 
    checkClientOrigin : 1, 
    sessionVarName : 'PHPSESSID' 
}; 

回答

1

我認爲你需要在警予的配置文件中添加127.0.0.1 - >節點插槽部分配置 - >參數是allowedServerAddresses

像這個^

'nodeSocket' => array(
    'class' => 'application.extensions.yii-node-socket.lib.php.NodeSocket', 
    'host' => 'localhost', // default is 127.0.0.1, can be ip or domain name, without http 
    'port' => 3001  // default is 3001, should be integer, 
    <b>'allowedServerAddresses' => array('127.0.0.1')</b> 
) 

而且你能顯示node-socket/lib/js/server/server.config.js配置文件嗎?

+0

嗨。請給我一秒鐘,我會提供更多的信息。感謝您前來幫忙 – madi 2014-10-08 07:36:41

+0

我已更新node-socket/lib/js/server/server.config.js設置,如上所示。請看看 Upvoted:給一些其他的發現/ – madi 2014-10-08 07:42:15

+0

真棒,它的作品! – madi 2014-10-08 08:42:27