2016-06-30 2 views
1

Итак, у меня есть готовый проект nodejs + socket.io + reactjs, который работает на моей машине. Я могу открыть различные вкладки или браузеры на своей машине, проверить ее и работать. Однако я хотел протестировать его на другой машине в своей локальной сети. Когда я подключаю его через Wi-Fi на другой машине к своему IP-адресу в сети, я вижу страницу. Однако socket.io не работает. Когда я открываю консоль в хроме (другой машины), это ошибка я вижу:React js Socket io не работает в локальной сети wifi

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LMXV0Uf Net :: ERR_CONNECTION_REFUSED

Это мой узел приложение-server.js:

app.use(express.static('./public')); 
app.use(express.static('./node_modules/bootstrap/dist')); 
var server = app.listen(3000); 
var io = require('socket.io').listen(server); 

Как я могу решить эту проблему? Также будет рекомендуемым способом развертывания в производстве, чтобы socket.io работал.

+0

Другой компьютер может указывать на ваш веб-сервер через URL-адрес браузера, но там прямо сказано, что он пытается подключиться к «localhost», который является другим компьютером. Соединение на стороне клиента также должно указывать на машину, на которой находится сервер. Это предназначено для работы по локальной сети или вы просто пытаетесь проверить это? – azium

+0

@azium Hello azium. Нет, я просто тестировал его в своей локальной сети. Извините, я всего лишь новичок. Что мне делать, чтобы решить эту проблему? Сделать приложение app/socket.io в сети ip? – Karl

ответ

2

В приложении сокета есть две части: материал, который находится на каком-то одном сервере, и код на стороне клиента, который распространяется на другие компьютеры, которым необходимо подключиться к серверу для соединения сокета.

Ваш код сервера, вероятно, не нуждается в изменении. Если вы можете связаться с ним через какой-то IP-адрес, это означает, что он правильно работает.

Допустим, вы можете получить доступ к веб-сайт с помощью http://1.2.3.4:3000

Где-то в вашей стороне клиента код, который вы будете иметь что-то вроде:

import io from 'socket.io-client' 
let serverUrl = 'localhost:3000' 
let socket = io(serverUrl) 

Вам нужно изменить serverUrl на IP-адрес вашего сервер, так http://1.2.3.4:3000

Это происходит потому, что localhost при загрузке с другого компьютера указывает на , что компьютер .. но вам нужно вернуть соединение сокета к исходному серверу.

+0

Да! Огромное спасибо. Теперь я знаю больше о сокетах io и nodejs. – Karl

Смежные вопросы