簡體   English   中英

Android到node.js的通信

[英]Android to node.js communication

我看到有幾個類似的線程,但我找不到我的答案。

我正在制作和Android應用程序,我想使用節點作為服務器進行實時通信。

我真的無法讓這個工作。

可能我犯了很多錯誤,但我想嘗試理解。

我的服務器很簡單

var http = require('http'),  
io = require('socket.io'),
server = http.createServer(function(req, res){ 
     res.writeHead(200, {'Content-Type': 'text/html'}); 
     res.end(':)'); 
});
server.listen(8080);
var socket = io.listen(server); 
socket.on('connection', function(client){
    client.send("hello");
    console.log("connected!");
});

這工作......我嘗試使用網絡應用程序,我可以連接。

但我不能用java ..

我嘗試了kryonet,但是我得到了一個例外,例如“已連接但注冊超時”

我試過weberknecht我在創建socket到ws://184.xxxxxx:8080時遇到“錯誤”

我試過TooTallNate ,沒有運氣,它只是調用onClose方法。

我試過jWebSocket,但我無法讓它工作......

所以我在這里,尋求幫助,有誰知道怎么做到這一點? 有什么建議嗎?

PS for TooTallNate我使用的是這樣的東西:

Net net = new Net(new URI("ws://184.xxxxxx:8080"),WebSocketDraft.DRAFT76);

問題可能在這里嗎?

更新:我處理了這個! 經過一段美好的睡眠后,我有了這個想法,我使用的是socket.io,糟糕的主意......現在我使用了Node Websocket Serverweberknecht 服務器看起來像這樣:

var ws = require("websocket-server");

var server = ws.createServer();

server.addListener("connection", function(client){
    console.log("new connection");
    client.send("aaaaaa");
    client.addListener("message", function(msg){
    });
});

server.listen(8080);

和客戶:

try {
    URI url = new URI("ws://184.106.69.64:8080/");
    WebSocket websocket = new WebSocketConnection(url);
    websocket.setEventHandler(new WebSocketEventHandler() {
        public void onOpen(){
            System.out.println("--open");
        }    
        public void onMessage(WebSocketMessage message){
            System.out.println("--received message: " + message.getText());
        }   
        public void onClose(){
            System.out.println("--close");
        }
    });

    websocket.connect();
    websocket.send("hello world");
}
catch (WebSocketException wse) {
    wse.printStackTrace();
}
catch (URISyntaxException use) {
    use.printStackTrace();
}

我是node-websocket-server(nws)的作者,我很確定node-websocket-server工作和socket.io的原因不是由於每個的實現。 NWS將自動協商使用正確的草案,並且它有希望90-100%符合76和75的草案。

至於socket.io,我不能評論太多,但最后我看,它的websocket實現是相當差的實現。

我目前正在開發一個名為node-websocket-protocol的項目,它將能夠被socket.io,faye等用於為他們提供真正可靠和兼容的websocket實現。 這也將取代2.0.0版本中node-websocket-server中的當前實現。

作為旁注,如果你不想托管自己的websocket服務器,你可以看看使用Pusher.com,他實際上是我的雇主。

[更新]至於websockets是否是適合您的應用程序的最合適的技術選擇,是您的應用程序需要什么類型的數據和交互。 在移動設備上,如果您只是發送推送通知,最好使用urbanairship或notifio之類的東西。

此致,米歇爾史密斯

像Raynos所說,websocket規范仍然是草案(變更)。 也許你可以問Guillermo Rauch(作者socket.io)他正在使用哪個草稿並找到合適的Websocket庫。 他的github頁面上,您可以找到他的電子郵件地址並嘗試向他發送電子郵件(簡稱)。

您也可以嘗試使用其他傳輸(長輪詢)並自己實現規范

但在我看來,你應該使用谷歌的c2dm (大玩家已經使用了這個並且將非常輕柔地使用你手機的電池)而不是實時推送手機更新。 我已經安裝了很多使用c2dm的應用程序,例如whatsapp (很棒)。 您可以使用notifo的api來簡化您的工作。 然后只需安裝android程序即可接收所需的通知。 還有一個節點模塊(npm)可供您使用(簡單:))

我建議

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM