簡體   English   中英

React-native socket.io發射/不觸發動作

[英]React-native socket.io emit / on actions not firing

我正在使用一個涉及socket.io的React-native應用程序。 我已經成功安裝了socket.ion並將其導入到我的組件中,例如:

import React, { Component } from 'react';
import io from 'socket.io-client/dist/socket.io';
const connectionConfig = {
    jsonp: false,
    reconnection: true,
    reconnectionDelay: 100,
    reconnectionAttempts: 100000/// you need to explicitly tell it to use websockets
  };
  socket = io('http://192.168.1.100:3001', connectionConfig);
type Props = {};
export default class Socket extends Component<Props> {
    constructor(){
    super();
    socket.emit("Button",'pressed')
    socket.on('userid',(id)=>{
      this.setState({userid:{id}});
      Alert.alert(id);
    })
  }

服務器端使用express的代碼是:

io.on('connection', function(socket){
  console.log(socket.id);
  socket.on('Button',function(data){
    console.log("ButtonPressed");
  });
 socket.emit('userid',socket.id);

})奇怪的是,每隔1.5秒,當我在Android設備上運行應用程序時,服務器控制台就會記錄一個不同的socket.id。 我假設socket.io連接成功,但是在提到的1.5si中再次斷開連接,這樣就不會執行socket.emit和socket.on事件了。我嘗試了提供的許多選項,但無法找到正確的方法來解決。 如果您知道解決方法,請多多關照。 謝謝。

我在android上意識到,如果您使用以下選項傳輸:['websocket']並且您處於開發模式,則首先通過搖動手機遠程啟用調試,插座將對您正常工作。 所以基本上你應該有類似

   import io from 'socket.io-client';
const connectionConfig = {
    jsonp: false,
    reconnection: true,
    reconnectionDelay: 100,
    reconnectionAttempts: 5000,
    transports: ['websocket']/// you need to explicitly tell it to use websockets
  };
  socket = io('http://192.168.1.100:3001', connectionConfig);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM