我无法使用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上
答案 0 :(得分:3)
目前有限的选择:
http://code.google.com/p/weberknecht/
对于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);