использование Socket.io в узле и reactjs получение ошибки: объект с ключами> {io, nsp, json, ids, acks, receiveBuffer, sendBuffer, подключен, - PullRequest
0 голосов
/ 13 апреля 2020

Reactcode (Приложение. js)

import React, { Component } from 'react';
import io from 'socket.io-client';

export default class App extends Component {

  state = {
    response:false,
    endpoint:"ws://127.0.0.1:8000/",
    socket:''
  }

  render() {
    let socketInstance = io('ws://127.0.0.1:8000/admin',{
      path:'/test'
    })

    return (
     <>
     <h1>You are looking at the connection id</h1>
     <p>ids are [{socketInstance&& 
      socketInstance.on('connect',()=>{
        console.log(socketInstance.id)
      })}]
    </p>
    <h2>You wil be looking the the emit event  from server</h2>
    <p>data[{socketInstance &&
      socketInstance.emit('level1',(data)=>{
        console.log(data)
      })
    }]</p>
     </>
    )
  }
}

Node.js

var app = require('express')();
var server = require('http').createServer(app);

// listen to port 
server.listen(8000)

// io  configure  the socket 
var io = require('socket.io')(server,{
    path:'/test',
    serveClient: false,
    pingInterval:10000,
    cookie:false
});


// After 2 argument is Socket admin can be a function 
const adminNameSpace = io.of('/^\/dynamic-\d+$/').on('connect', (socket)=>{
    // brodcast to all clients in given sub-nameSpace
    const newNamespace = socket.nsp; 
    // newNamespace emit
    newNamespace.binary(false).emit('hello')
});

// brodcast to all clients in each sub-nameSpace 
adminNameSpace.binary(false).emit('hello all subnameSpaces')

// describe a  room for nameSpace
adminNameSpace.to('level1').emit('an event',{ some: 'data'})

// get all the ids connected to nameSpace
io.of('/^\/dynamic-\d+$/').clients((error,clients)=>{
    if(error) throw error
    console.log("we are seeing the clients for the nameSpace")
    console.log(clients)  // prints all the clients connected
})


io.of('/^\/dynamic-\d+$/').in('general').clients((error,clients) =>{
    if(error) throw error
    console.log("get all the users for the namespace")
    console.log(clients)
})



// close the current connection 
// io.close()

1) Следующее моё node.js и реагирую. js code

2) Я создал сервер в node.js и использую этот сервер в React для печати идентификаторов и отправки события в моем приложении React

3) Но я получение следующей проблемы

Ошибка: объекты недопустимы как дочерний элемент React (найдено: объект с ключами {io, nsp, json, идентификаторы, acks, receiveBuffer, sendBuffer, подключен, отключен, флаги, подпрограммы, _callbacks}). Если вы намеревались визуализировать коллекцию дочерних элементов, используйте вместо этого массив

4) Я пробовал, как сказано в документации клиента socket.io ([https://socket.io/docs/client-api/)] [ 1]

5) я хочу отобразить идентификатор и распечатать некоторые данные, поступающие с уровня 1

...