2012-04-05 64 views
7

Tôi gặp sự cố khi nhận io socket để gửi phản hồi khi kết nối với trình duyệt Android. Tôi đã ghi lại các tham số và chúng xuất hiện phía máy chủ, có vẻ như phía máy khách không kết nối đúng cách. Tôi vô hiệu hóa jsonp, nhưng tôi nghe nói rằng android rơi trở lại xhr anyways.trình duyệt android và ổ cắm io

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}); 
}); 

Điều này hoạt động trên mọi trình duyệt (thậm chí di động, di động FF, beta chrome di động). Tôi phải làm mới trình duyệt Android 4-5 lần cho nó để cuối cùng kết nối. BTW, im sử dụng js giản (_)

CẬP NHẬT Điều này dường như xảy ra trên wifi chỉ

+0

bạn đã cấu hình máy chủ? Bạn đang triển khai ở đâu? – JakeWilson801

+2

khi bạn đặt tiền thưởng, nó cắt đại diện cũ của bạn ngay lập tức – UmNyobe

Trả lời

0

Đối với những gì đáng giá, ví dụ đơn giản này bên dưới hoạt động trên trình duyệt Android của tôi. Cho chúng tôi biết nếu có bất cứ điều gì cụ thể mà bạn cần, mà không được diễn tả dưới đây - quan trọng: Thay đổi số IP và cổng đến bất cứ điều gì phù hợp với môi trường của bạn:

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); 
+0

vấn đề tôi gặp phải là tôi phải làm mới trình duyệt android, 4-5 lần để nó thực sự kết nối. Tôi đã thêm logic 'kết nối' ở trên. Tôi đang kết nối trên url máy chủ của tôi và cổng 80, vì vậy tôi không khai báo cổng trong io.connect. – re1man

1

Tiếp theo socket io website, có vẻ như bạn không phải là sử dụng nó đúng.

Hãy thử thay đổi socket.on('connect',function (data) {

để

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

Các vấn đề liên quan