簡體   English   中英

如何在 socket.io-client 中建立連接並做出反應?

[英]How to establish connection in socket.io-client and react?

我在使用帶有反應的 socket.io-client 時遇到問題。 我剛剛開始如何使用它,所以我想在有連接時在控制台中顯示一條消息,但控制台中沒有出現任何內容。 是的,我同時運行了反應應用程序和服務器。

服務器.js

const app = require('express')

const http = require('http').createServer(app)
const io = require('socket.io')(http)

let subject = ''

io.on('connection', (socket) => {
    console.log('ahoj')
    
})

http.listen(4001,function(){
    console.log('listening on port 4001')
})

應用程序.js

import './App.css';
import CreateSubject from './components/CreateSubject'
import Hangman from './components/Hangman'
import { HangmanProvider } from './context/HangmanContext'
import io from 'socket.io-client'

io.connect('http://localhost:4001')



function App() {
  return (
    <HangmanProvider>
      <div className="App">
        <CreateSubject/>
        <Hangman/>
      </div>
    </HangmanProvider>
  );
}

export default App;

預期的 console.log

listening on port 4001
ahoj

我的控制台.log

listening on port 4001

將此添加到您的 server.js 文件以啟用 cors,此處“3000”是您的 React 應用程序運行的端口。

const io = require("socket.io")(http, {
  cors: {
     origin: "http://localhost:3000",
  },
});

在您的 App.js 文件中添加這些行

 import socketIOClient from 'socket.io-client';
 const ENDPOINT = 'http://localhost:4001';

 useEffect(() => {
   const socket = socketIOClient(ENDPOINT);
   socket.onAny((event, ...args) => {
    console.log(event, args);
   });
 }, []);
 

替換: import { io } from 'socket.io-client';

與:從'socket.io-client'導入socketIOClient;

暫無
暫無

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

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