[英]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.