2011-08-03 80 views
4

我正在運行一個nodejs/socket.io(v 0.7)服務器來將數據推送到Web客戶端。這很有效。通過PHP和cURL訪問NodeJS/Socket.io

要擴展應用程序,我需要通過php觸發/影響socket.io。我知道一個解決方案,可以通過http與nodejs http服務器一起使用cURL。

一個可能的解決方案是在同一個app.js中運行socket.io服務器和nodejs http服務器。客戶端使用socket.io進行連接和通信,並且唯一允許的連接到「獨立」http服務器(當然,在socket.io以外的另一個端口上監聽)分別從php服務器上的cURL的127.0.0.1開始。

因爲兩臺服務器都在相同的範圍內,http服務器可以在socket.io服務器上觸發事件。

我的問題:這樣做有什麼意義嗎?有沒有一個更清潔的解決方案觸發來自PHP的socket.io事件?

回答

1

我認爲這是一種合理而直接的方式;似乎建議謹慎處理執行順序,但這可能只是我對節點顯示的不確定性。

+0

好了,謝謝你。我會這樣做。 – helix

1

我在寫一個解決方案,我覺得它看起來很像pusher API。它利用房間(渠道)的概念。從路線express我可以捲曲(通過PHP)發送消息到房間(頻道)。

io.sockets.in('your room').json.send('your json'); 

我想在將來開源項目(希望在一週內),但希望你能得到照片。

+0

嗨阿爾弗雷德,不知道這是我在尋找什麼。無論如何,如果你有很棒的開源項目,不要忘記在完成後發佈鏈接! – helix

+1

你有沒有發表過你的解決方案?我對此非常感興趣。 – EsTeGe

+0

@EsTeGe我倒退了:$,但我想繼續努力。 – Alfred

0

socket.io與版本比1.3.3更高(可能是年紀大),就可以觸發事件EMIT如下

//send broadcast message to all connecting clients 
io.emit([message event],[your message body obj or str]); 

// send to specific user 
io.to([your room]).emit([message event], [your message body obj or str]);