反应本机套接字 io 没有从客户端发出事件

Posted

技术标签:

【中文标题】反应本机套接字 io 没有从客户端发出事件【英文标题】:React native socket io no events being emitted from client 【发布时间】:2016-12-28 08:40:31 【问题描述】:

尝试将 socket.io-client 与 react-native(目前为 ios)一起使用,到目前为止,连接/从客户端接收服务器端事件似乎工作正常。但是我似乎无法从客户端发出任何事件?

客户

var socket = io("http://localhost:3000");
    socket.on('connect', function()
        socket.on('ping', function(e) 
            console.log('Server emitted ping: ' + e);
            socket.emit('pong', 'hi server!');
        );
        socket.on('disconnect', function()
            console.log("disconnect");
        );
    );

服务器(Node.js)

var io = require('socket.io')(server);
io.on('connection', function (socket) 
  console.log('connected...');
  socket.on('pong', function (data) 
    console.log("Hmm?");
    console.log(data);
  );

  setTimeout(function() 
    console.log("Saying hello");
    socket.emit('ping',  message: 'Hello from server ' + Date.now() );

  , 1000);
);

所以从服务器端,我看到了日志

connected...
Saying hello

在客户端我看到“服务器发出 ping...”,但 pong 事件似乎没有做任何事情?我尝试通过 *** 中提到的解决方案捕获服务器上的所有事件,但看起来没有来自客户端的事件。有任何想法吗?

使用最新的 RN 版本 0.31。

当我第一次在 Xcode 中运行应用程序时也看到这个错误,可能是这个原因吗?:

[warn][tid:main][RCTEventEmitter.m:52] Sending `websocketFailed` with no listeners registered.

【问题讨论】:

你试过在 socket.on 外部发射吗? 我有。它似乎也没有发出任何东西...... 在服务器上试试我的答案 【参考方案1】:

请尝试:

io.sockets.on('connection', function(socket) 
    ....
)

【讨论】:

同样的问题:/我感觉这是一个错误,反应本机如何包装发射器代码 让我尝试创建一个 RN 应用来快速运行它 好的,我将在 github 中创建一个问题并引用此线程。 刚刚意识到我实际上并不需要从客户端向服务器发送内容。我可以用基本的 Ajax 请求来做到这一点,只需要服务器到客户端事件:) 您可能希望通过套接字使用双向通信,但这取决于您。 :)

以上是关于反应本机套接字 io 没有从客户端发出事件的主要内容,如果未能解决你的问题,请参考以下文章

使用node.js套接字客户端向sails.js(0.11.x)发出事件[重复]

与 Socket.io 反应 - 在“socket.on”事件上不断地重新渲染

Node js服务器和c ++客户端套接字io连接,无法发出或读取数据

iOS 上的 DeviceEventEmitter

在 socket.io 上从客户端捕获所有事件“发出”

如何从 socket.io 获取原生事件数组?