簡體   English   中英

socket.io 在生產中與 node.js 和反應

[英]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 });

我不知道我是否需要更改本地主機或如何調試,但這是我的控制台在瀏覽器中所說的。

控制台中的cors錯誤

好的,所以我要做的就是將 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.

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