簡體   English   中英

websocket socket.io dir nodejs

[英]websocket socket.io dir nodejs

我對 socket.io 和目錄有疑問

我有一個 api 來驗證登錄 / jwt 等

我開始創建一個websocket服務器來創建一個joken po游戲,一個問題我已經有了這個api文件夾,我應該在這個里面創建我的websocket服務器嗎? 還是為這個單獨的 websocket 服務器創建另一個文件夾更好,它將消耗我的登錄 api 和其他日期

以及必須通過 nodejs 上的 html 目錄才能使用 socketio ex:

webApp.get ('/', (req, res, next) => {
res.sendFile (__ dirname + 'game.html'
});

如果我在與前端不同的文件夾中創建,我將如何進行通信? 例如:我在前端文件夾中的前端 我在后端文件夾中的后端

您可以使用現有的快速服務器來托管您的 socket.io 實例。 您可以重用所有相同的基礎設施,並繼續使用 jwt 令牌進行 socket.io 的身份驗證。 看npm上的socketio-jwt package。

const socketioJwt = require('socketio-jwt');
const express = require('express');
const app = express();

// rest of your express config
...

const server = app.listen(PORT,
  console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`)
);

const io = require('socket.io')(server);
io.use(socketioJwt.authorize({
  secret: 'your secret or public key',
  handshake: true
}));

io.on('connection', (socket) => {
  console.log('hello!', socket.decoded_token.name);

  socket.emit('hello', {message: 'hello world'});

  socket.on('myevent', myhandler);
});

理想情況下,您可以簡單地使用 socket.io 進行所有后端通信。

在反應中,您只需導入socket.io 客戶端,然后按如下方式連接:

let socket = null;

function App() {

  useEffect(() => {

    async function connect () {
       socket = io.connect('http://myserver');
    }
    connect();

  }, []);

  return (
    <div>
       Hello
    </div>
  );
}

export default App;

有很多內容要涵蓋,這是一個廣泛的問題,但是您現在有一些起點可以繼續您的研究。

暫無
暫無

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

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