forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   node js, 30% игроков не могут подключится (http://forum.boolean.name/showthread.php?t=20268)

KingMaks 15.04.2016 22:08

node js, 30% игроков не могут подключится
 
Добрый день. Серверная часть игры на node js, при входе в игру флешка сначала ждет ответа от сервера и лишь потом игра запускается. Третей части игроков так и не удается подключится к серверу по неизвестным причинам. Есть подозрения, что это как-то связано с номером порта, так как допрашивал игрока у которого не запускалась игра и когда я сменил порт на ноде, то у него все-таки зашло в игру. Что делать? В какую сторону копать? моет можно слушать несколько портов или еще какие выходы могут быть? Запускал на порте 6969, потом сменил на 6868. Спасибо.

pax 16.04.2016 12:19

Ответ: node js, 30% игроков не могут подключится
 
А не могло ли помочь то, что ты просто сервер перезапустил?

KingMaks 16.04.2016 14:24

Ответ: node js, 30% игроков не могут подключится
 
Цитата:

Сообщение от pax (Сообщение 305545)
А не могло ли помочь то, что ты просто сервер перезапустил?

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

pax 16.04.2016 21:00

Ответ: node js, 30% игроков не могут подключится
 
На всякий спрошу - на обоих сторонах установлен nodelay?

moka 16.04.2016 22:39

Ответ: node js, 30% игроков не могут подключится
 
Какой протокол используешь для соединения?
Порта да, часто блокируют. Всякие организации, университеты, предприятия, и публичные вай-фаи имеют жёсткие ограничени на порты и трафик.
Также "странный" трафик который идёт не по SSL соединению, я встречал не раз разные места где обрывают соединения.
Например WebSockets соединение, не по SSL, по 80 порту, некоторые университеты обрывают нарошно, основываясь 101 HTTP коду (Switch Protocol). Переход на SSL помогает, т.к. они не могут получить доступ к данным запроса.

Лучший вариант с хорошим соединением, это SSL по стандартному порту 443.

Это относится не к node.js, а вообще к сети.

KingMaks 18.04.2016 14:51

Ответ: node js, 30% игроков не могут подключится
 
pax, я так понимаю nodelay перед отправкой всю дату воедино собирает? ну я вручную такую штуку написал, жду пока вся дата придет и только потом обрабатываю.

moka, TCP/IP использую, ну как выход можно слушать несколько портов? и если с одним портом проблемы попробовать подключится с клиента к другому порту. Или это не самое верное решение?

Еще немного информации, на стороне клиентов у которых не работает выскакивает security error

moka 18.04.2016 15:22

Ответ: node js, 30% игроков не могут подключится
 
Цитата:

Сообщение от KingMaks (Сообщение 305589)
moka, TCP/IP использую, ну как выход можно слушать несколько портов? и если с одним портом проблемы попробовать подключится с клиента к другому порту. Или это не самое верное решение?

Еще немного информации, на стороне клиентов у которых не работает выскакивает security error

HTTP использует TCP по порту 80.
HTTPS (HTTP + SSL) использует TCP по порту 443.

Если один порт не разрешает, то скорее всего и остальные не разрешит, и сеть настроена на запрет всех портов с исключениями конкретных (80, 443, и пару других, скорее всего занятых конкретными сервисами).

Знаю что из flash'а, нужно делать обмен policy там какой-то, просто открывать соединение они вроди не дают.
В общем, ставь nginx на сервере, делай proxy на node.js процесс, и уже на ноде обрабатывай это дело, чтобы трафик по 80 порту, сортировался между веб темой и сокетами, таким образом ты обойдёшь проблемы с запретами.

Как уже говорил, лучше всего использовать HTTPS (443), т.к. более жесткие организации обрывают сокеты по порту 80ому, если им "не нравятся" заголовки запроса.

А вообще, чтобы это дело было ещё проще всего, используй WebSocket'ы во флаше и ноде, по порту 443 с валидным SSL трафиком.

pax 19.04.2016 01:33

Ответ: node js, 30% игроков не могут подключится
 
Цитата:

Сообщение от KingMaks (Сообщение 305589)
pax, я так понимаю nodelay перед отправкой всю дату воедино собирает? ну я вручную такую штуку написал, жду пока вся дата придет и только потом обрабатываю.

Не совсем, nodelay указывает, что данные надо отправлять сразу, а не ждать достаточного размера пакета (не собирать несколько пакетов в один). Читать полностью данные ты правильно сделал, но отправлять надо сразу. Либо вызывать flush или подобные методы для мгновенной отправки.
Просто есть вероятность, что сервер может не дождаться пакета логина. Ты пинг делаешь раз в какой-то промежуток времени?


Часовой пояс GMT +4, время: 22:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot