Если ваша ОС не принимает соединения, то на уровне Ruby вы ничего не можете с этим поделать.Вам нужно будет отключить брандмауэр или добавить исключение для этого порта.
Вот три шага, которые вам нужно сделать:
Убедитесь, что вы привязали TCPServer к"публичный" IP
Обновление: как @ siegy22 указал в комментариях: вы также можете использовать "0.0.0.0".
Вы можете найти его в настройках сети или черезipconfig
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether ca:fe:ca:fe:ca:fe
inet y.y.y.y netmask 0xffffff00 broadcast x.x.x.x
media: autoselect
status: active
Здесь y.y.y.y
- это интересующий вас IP-адрес. Создайте TCTServer следующим образом:
TCPServer.new("y.y.y.y", 2345)
Остановите брандмауэр вашего Mac (илиразрешить конкретное подключение к этому порту)
Это можно сделать в разделе «Предпочтения / Securiry».
Снова включите его после тестирования
Подключитесь к серверу с другого компьютера
telnet y.y.y.y 2345
Вышеуказанные шагиПредположим, что оба компьютера находятся в одной сети, нет соединения через интернет.Если вы находитесь в другой сети (например, бот подключен к Интернету), мне приходят на ум два решения
- Tunnel: используйте сервис, такой как ngrok (https://ngrok.com/), для созданиятуннель к вашему серверу с публичным адресом. Следуйте инструкциям, и вы получите публичный адрес, который ваш партнер может использовать для подключения.
- вы можете посмотреть свой публичный IP через службу (что-то вроде https://www.whatismyip.com/what-is-my-public-ip-address/), а затем используйте этот IP-адрес для подключения. Это может не работать без дальнейших изменений в вашей сети, поскольку маршрутизатор / модем может / должен блокировать входящие подключения, и вам потребуется какая-то переадресация на ваш компьютер.
Предлагаю сначала попробовать ngrok (или что-то подобное).