работать на socket.io-tester, но не на клиентской стороне реакции, которую я создал - PullRequest
0 голосов
/ 30 апреля 2019

Я скачал socket.io-tester , чтобы проверить мой socket.io, и он отлично работает, моя проблема в том, что когда я создаю приложение activjs, которое было подключено к socket.io с использованием сокета .io-client это не сработало, и я не получаю никаких сообщений от сервера. Когда я нахожусь в разработке, а клиент и сервер находятся на локальном хосте, он работает, но при развертывании не работаетне работаетчто не так в моем коде?

вот мой код реагирования.

import React, { Component } from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import ReactDOM from 'react-dom';
import io from 'socket.io-client';

const socket = io('https://example.com/socket.io');

class App extends Component {

  componentDidMount() {
    socket.on('chat', (payloadData) => {
      console.log(payloadData);
    })
  }

  render() {
    return (
      <div></div>
    );
  }
}

export default App;

А это мои настройки на /socket.io/ virtualhost

location ^~ /socket.io/ {
    proxy_pass http://localhost:3005;
    proxy_redirect off;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Мой код на стороне сервера:

import http from 'http';
import express from 'express';
import bodyParser from 'body-parser';

import config from './config';
import routes from './routes';

const socket = require('socket.io');
let app = express();
app.server = http.createServer(app);

// parse application/json
app.use(bodyParser.json({
    limit: config.bodyLimit
}));

// config.port == 3005
app.server.listen(config.port, () => {
    console.log(`started on port ${app.server.address().port}`);
});

// socket.io setup
const io = socket(app.server);

io.on('connection', (socket) => {
    console.log('connection made', socket.id);
    socket.on('chat', (data) => {
        io.sockets.emit('chat', data);
    });
})

PS.Я не включил все свои коды на стороне сервера, потому что это слишком долго, я включаю только те коды, которые были связаны с темой.

...