使用可用于与Android App通信的nodejs创建websocket服务器

时间:2014-01-17 22:49:03

标签: android node.js heroku websocket socket.io

我已经从我的localhost机器创建了一个websocket服务器,可用于与Android应用程序通信。

服务器是用Node.js编写的,并托管在我的机器上

var HOST = "192.168.0.15";
var PORT = 6969;

var Sock = net.Socket();

net.createServer(function(sock) {

    Sock = sock;

    // We have a connection - a socket object is assigned to the connection automatically
    console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);

    // Add a 'data' event handler to this instance of socket
    sock.on('data', function(data) {
        console.log('DATA ' + sock.remoteAddress + ': ' + data);
        // Write the data back to the socket, the client will receive it as data from the server


        var jsonStr = JSON.stringify(data);

        sock.write(jsonStr);

        var buffer = "";

    });

    // Add a 'close' event handler to this instance of socket
    sock.on('close', function(data) {
        console.log('CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort);
    });

}).listen(PORT, HOST);

io.sockets.on('connection', function(socket){
    socket.on('send message', function(data){
        Sock.emit("data", data);
    });
});

我的Android应用程序使用Java Websocket

socket = new Socket("192.168.0.15", 6969);
commsThread = new CommsThread(socket);
commsThread.start();

我的Android设备用于测试我的应用,我的服务器在同一个网络中运行,因此它们可以正常工作。

但是,当我在Heroku中部署它时,它会给我一个错误。

注意:我尝试更改主机地址和PORT地址,但无济于事。

我被告知Heroku不支持TCP套接字服务器。

我不确定上面的示例是否是TCP套接字服务器。

如果没有,为什么我可以使用一些替代方案。

干杯, 丹尼斯

2 个答案:

答案 0 :(得分:0)

为什么不将socket.io-java-client与socket.io模块一起用于Node.js?

答案 1 :(得分:0)

您是否在Heroku中启用了websockets?

$ heroku labs:enable websockets