![](/img/trans.png)
[英]WebSocket connection failed with nginx, nodejs and socket.io
[英]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.