[英]socket.io in production with node.js and react
您好,我正在為生產設置我的第一個 socket.io 聊天應用程序。 我正在使用 netlify 通過 react 和 heroku 和 JAWSdb 為 mysql 托管前端。 這是我的后端代碼 Node.js
const port = process.env.PORT || 4000;
const router = require('./routes/routes');
const cors = require('cors');
const app = express();
const bodyParser = require('body-parser');
const session = require('express-session');
app.use('*', cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(
session({
secret: 'cutiewithabooty',
resave: true,
saveUninitialized: true,
})
);
const server = require('http').createServer(app);
const options = {
cors: true,
origins: ['http://127.0.0.1:4000'],
'force new connection': true,
};
const io = require('socket.io')(server, options);
io.on('connection', (socket) => {
const currentlyConnected = [];
currentlyConnected.push(socket.id);
console.log(currentlyConnected);
console.log('connecting..', socket.id);
socket.on('chat', (chat) => {
console.log(chat);
});
socket.on('typing', (typing) => {
io.sockets.emit('typing', typing);
});
socket.on('new_message', (data) => {
io.sockets.emit('new_message', data);
});
socket.on('remove', (socket) => {
console.log('user disconnected!');
});
});
和我的前端
import { io } from 'socket.io-client';
const ENDPOINT = 'http://localhost:4000';
var socket = io(ENDPOINT, { forceNew: true });
我不知道我是否需要更改本地主機或如何調試,但這是我的控制台在瀏覽器中所說的。
好的,所以我要做的就是將 Node.js 服務器更改為我的 netlify 應用程序,即
const server = require('http').createServer(app);
const options = {
cors: true,
origins: ['https://infallible-pasteur-b0e6fc.netlify.app'],
'force new connection': true,
};
const io = require('socket.io')(server, options);
在我的客戶端將端點更改為我的 heroku 應用程序,即
import { io } from 'socket.io-client';
const ENDPOINT = 'https://chatroom-express-db.herokuapp.com';
var socket = io(ENDPOINT, {
forceNew: true,
origins: 'https://chatroom-express-db.herokuapp.com',
});
和沃利亞。 有用。 謝謝大家。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.