javascript - React native et le socket.io ne fonctionne pas




node.js react-native (2)

Merci, Peter. À mon avis, l'article que vous avez trouvé n'est pas utile parce que vous essayez de vous connecter à l'hôte qui sert la page. D'après l'exemple sur la page socket.io , essayez de vous assurer que cette ligne fonctionne: const io = require('socket.io-client/socket.io'); et connectez-vous sans lien: let socket = io();

Cela a fonctionné pour moi, mais seulement dans le navigateur sur le même ordinateur. Je pense que lorsque vous tester sur l'appareil, vous devez spécifier votre adresse IP au lieu de localhost.

Bonne chance :)

Ci-dessous est mon code natif de composant et de serveur server.js de réaction que j'essaye de me relier à mon nœud principal backsocket web.

Mon code de réaction s'exécute sur le même ordinateur que le serveur. J'ai trouvé tellement de réponses différentes ici, et github, dont je ne peux pas travailler.

J'ai également trouvé cette question qui n'a jamais été répondue, et cette question a une réponse, que je ne peux pas obtenir de travail (a été demandé il y a plus d'un an)

J'ai trouvé cet article et j'ai essayé de modifier mon code en fonction de ces directives, mais cela n'a pas fonctionné.

réagir au code

import React from 'react';
import { StyleSheet, Text, View, Image } from 'react-native';

const io = require('socket.io-client/socket.io');
let socket = io('http://localhost:3000');

export default class App extends React.Component {

    constructor(props) {
        super(props);
        console.log(socket);
    }

    render() {
        return (
            <View>
                <Text>Websocket</Text>
            </View>
        );
    }
}

server.js

const express = require('express');
const http = require('http')
const socketio = require('socket.io');

const app = express();
const server = http.Server(app);
const websocket = socketio(server);
server.listen(3000, () => console.log('listening on *:3000'));

console.log(websocket)

// The event will be called when a client is connected.
websocket.on('connection', (socket) => {
  console.log('A client just joined on', socket.id);
});

J'utilise les versions suivantes de paquets

"expo": "^16.0.0",
"react": "16.0.0-alpha.6",
"react-native": "^0.43.4",
"socket.io-client": "^1.7.3"

Le code de votre serveur semble correct. Bien que vous devriez vérifier si vous pouvez vous connecter à son socket via un autre client.

Quoi qu'il en soit, essayez ceci pour réagir au code natif.

Importer par:

import io from 'socket.io-client/socket.io'

Dans votre composant, faites:

componentDidMount () {
    const socket = io(YOURURL, {
      transports: ['websocket']
    })

    socket.on('connect', () => {
      console.log("socket connected")
      socket.emit('YOUR EVENT TO SERVER', {})
      socket.on('EVENT YOU WANNA LISTEN', (r) => {
      })
    })

    socket.on('connect_error', (err) => {
      console.log(err)
    })

    socket.on('disconnect', () => {
      console.log("Disconnected Socket!")
    })
  }






socket.io