【问题标题】:android browser and socket ioandroid浏览器和socket io
【发布时间】:2012-04-19 13:15:17
【问题描述】:

我无法让套接字 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 上

【问题讨论】:

  • 你配置服务器了吗?您要部署到哪里?
  • 当你提供赏金时,它会立即削减你的旧代表

标签: android node.js socket.io


【解决方案1】:

目前选项有限:

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

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

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

就 WebSockets 而言听起来不错。 Socket.IO 的特定有线协议似乎尚未在 Java 中实现,因此您可能需要自己处理。

【讨论】:

    【解决方案2】:

    关注socket io website,看来你没用对。

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

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

    【讨论】:

      【解决方案3】:

      不管怎样,下面这个简单的例子可以在我的 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);
      

      【讨论】:

      • 我遇到的问题是我必须刷新 android 浏览器 4-5 次才能真正连接。我在上面添加了“连接”逻辑。我在我的服务器 url 和端口 80 上连接,所以我没有在 io.connect 中声明端口。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2013-01-31
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多