2014-03-27 31 views
1

我想開發一個JavaScript應用程序,它應該能夠通過UDP套接字與其他第三方應用程序進行通信,並通過本地瀏覽器窗口呈現一些數據。使用UDP套接字的JavaScript應用程序 - NodeJS和SocketIO

據我所知,我應該使用NodeJS的UDP套接字連接,我已經測試了它的示例UDPserver.js示例,它似乎很好。

我現在的問題是如何將從UDP服務器(本地在NodeJS控制檯上運行)接收到的數據傳遞到我的主應用程序,該應用程序將在瀏覽器上運行。我讀過,我必須使用Socket.IO來實現這種實時連接。

那麼,它的東西就像在同一臺機器上同時運行一個客戶端應用程序和一個服務器應用程序? socketIO如何連接這兩個部分?我應該使用WebSockets來連接我的應用程序和NodeJS嗎?

| JQUERY JS |   | NODE.JS |      |  C++  | 
    |    | [?] |   | [UDP SOCKETS] |    | 
    |LOCAL WEB APP| <=====> |UDP SERVER| <-----------------> |3RD-PARTY APPS| 
    | (local) |   | (local) |      | (network) | 

有人可以爲我清除它嗎?它應該是相對容易的事情,但我對此很陌生。

+0

則可直接流UDP包緩衝器到websocket二進制文件,但它不會給你一個好的結果。不是TCP的選擇?有一些不錯的橋樑TCP <-> websocket使用。 – Gntem

+0

你們,我檢查了一些,如websockify。它很好地工作,但不幸的是,我想連接到的第三方應用程序獨家使用UDP套接字.. – LePhleg

回答

2

由於普通的瀏覽器不能讓JavaScript直接訪問套接字,所以只能通過網頁完成。通過使用節點中介和通過websockets連接瀏覽器,您正處於正確的軌道上。

但是,您的應用程序可能最適合於node-webkit,它將Chromium瀏覽器與node.js集成在同一個包中。這意味着您的網頁代碼可以直接使用像UDP套接字這樣的節點API。

+0

哇聽起來有趣..我要檢查這個 – LePhleg

+0

好吧,最後我很確定'Node-WebKit'會爲我做更簡單的工作!謝謝喬希,回答理所當然! – LePhleg

3

您的瀏覽器無法通過UDP進行通信。 (無論如何都是WebRTC之外的。)

WebSockets不是真正的網絡套接字。它們是通過HTTP請求首先建立的TCP連接的抽象層。

Socket.IO超過該抽象的另一層,其提供的WebSocket樣功能,以及RPC,在幾個傳輸包括的WebSockets,長輪詢JSON等