2013-12-12 50 views
0

說我有這調用時休息終點傳遞的數據發送到客戶端例如啓動一個長期運行的進程服務器端socket.io基於ID的客戶

http://host/api/program/start 

我想推動從該進程從服務器端到客戶端的任何更新/輸出。

我想剩下的通話將返回某種獨特的ID,其連接到WebSocket的僅接收這個特定的進程更新時,客戶端可以再使用的。

我得想想緩衝輸出/從更新的過程中發送給客戶端,如果他們不從過程輸出的第一前連接,但不考慮這一點,這將是實現的最佳途徑套接字數據處理這個?我能否以某種方式使用socket.io房間/命名空間?

+0

Huh..What會我正在使用的IP地址? – gratz

回答

0

如果你真的想這樣做,我會建議通過初始start調用生成ID,然後將其作爲參數傳遞給長時間運行的進程。然後該進程將所有消息發佈到該ID(適當的客戶端也正在監聽)。

不過,我想從這個方法去阻止你。在Node中處理子進程有很多方法,所以你可能希望稍微查看一下這些選項,這樣你就不會在整個地方處理殭屍進程了。

首先想到的是ChildProcess。另一種選擇將是類似於WebWorker Threads。這些都是正確的(我認爲)你想要做的事情,但允許你保持對子進程的更多控制。

+0

是的,這不是一個這樣的問題,我已經完成了所有在節點中使用子進程。我正在捕獲stdout和stderr或進程,但希望將此(通過websockets實現)推送給已提供該id的連接客戶端/客戶端以傾聽此進程。這是關於如何針對特定套接字,而不是發送到所有套接字/廣播輸出.. – gratz

+1

然後,我不認爲我確定什麼是原始問題。我會完全按照你的說法進行操作,並在生成子進程時生成一個唯一的字符串用作WebSocket命名空間。 –

+0

乾杯,我會檢查出WS命名空間 - 這是我的一部分,我想知道。無論客房/名稱空間是否合適,或者我是否需要在後端明智地處理其他事情。 – gratz