7

我无法让套接字 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 beta)。我必须刷新 android 浏览器 4-5 次才能最终连接。顺便说一句,我正在使用流线型 js (_)

更新这似乎只发生在wifi上

4

3 回答 3

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 中实现,因此您可能必须自己处理。

于 2012-04-18T07:06:12.113 回答
1

按照socket io website,您似乎没有正确使用它。

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

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

于 2012-04-24T05:39:19.090 回答
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);
于 2012-04-18T10:54:17.900 回答