android浏览器和socket io

时间:2012-04-05 19:20:00

标签: android node.js socket.io

我无法使用socket io在Android浏览器的连接上发送响应。 我记录了参数,它们出现在服务器端,似乎客户端没有正确连接。我禁用了jsonp,但我听说android无论如何都要回到xhr。

socket.on('connect',function (data) {
            socket.emit('setNickAndRoom', {nick: nick}, function(response){
//response. nothing :(.
});
});

client.on("setNickAndRoom", function(nick, fn,_){
//etc etc

fn({msg :nick});
});

这适用于所有浏览器(甚至是移动Safari,移动FF,移动Chrome测试版)。我必须刷新android浏览器4-5次才能最终连接。顺便说一句,即时通讯使用流线型js(_)

UPDATE 这似乎只发生在wifi上

3 个答案:

答案 0 :(得分:3)

目前有限的选择:

http://code.google.com/p/weberknecht/

https://github.com/TooTallNate/Java-WebSocket

https://github.com/Gottox/socket.io-java-client

对于WebSockets来说,听起来是正确的。 Socket.IO的特定线路协议似乎尚未在Java中实现,因此您可能必须自己处理。

答案 1 :(得分:1)

socket io website之后,您似乎没有正确使用它。

尝试更改socket.on('connect',function (data) {

socket.on('connection',function (data) {

答案 2 :(得分:0)

对于它的价值,下面的这个简单示例适用于我的Android浏览器。如果您需要任何具体内容,请告知我们,以下内容未包含 - 重要: 将IP号码和端口更改为适合您环境的内容

var express = require('express'),
    socketio = require('socket.io'),
    app = express.createServer(),
    io = socketio.listen(app);

var index = "<!doctype html>\
<html>\
  <head>\
    <script src=/socket.io/socket.io.js></script>\
    <script>\
        var socket = io.connect('http://10.0.1.29:3000');\
        function send() {\
            socket.emit('foo', 'Ben', function(data) {\
                alert(data);\
            });\
        }\
    </script>\
  </head>\
  <body>\
  <button onclick='send();'>Send</button>\
</html>";

app.get('/', function(req, res) {
    res.send(index);
});

io.sockets.on('connection', function(socket) {
    socket.on('foo', function(name, f) {
        f('Hello ' + name);
    });
});

app.listen(3000);