#c# #.net #html #websocket #xsockets.net
#c# #.net #HTML #websocket #xsockets.net
Вопрос:
Я разрабатываю сайт с использованием WebSockets и использую XSockets.NET для реализации всего сервера WebSockets.
Кроме того, я могу добраться до XSocket.СЕТЕВОЙ контроллер с компьютера разработки, но я не могу связаться с ним с другого компьютера.
Кстати, это не проблема DNS, потому что сам веб-сайт доступен для просмотра с любого другого компьютера: это что-то с WebSockets.
В настоящее время я получаю следующую ошибку в Firebug: Firefox не может установить соединение с сервером […], где сервер — это полное имя хоста на порту 7532.
Я могу предоставить пример кода того, как я настраиваю и запускаю весь сервер WebSockets:
IXSocketServerContainer server = Composable.GetExport<IXSocketServerContainer>();
List<IConfigurationSetting> serverConfig = new List<IConfigurationSetting>();
serverConfig.Add(new ConfigurationSetting("ws://[host name]:7532", new HashSet<string> { "*" }));
server.StartServers(configurationSettings: serverConfig);
Кроме того, все XSockets.NET размещается в службе Windows, и я подключаюсь к XSocket.СЕТЕВОЙ контроллер, использующий готовые XSockets.NET JavaScript API:
// This will work as expected when I open my site from the development machine
var conn = new XSockets.WebSocket("ws://[host name]:7352/[controller name]");
conn.on(XSockets.Events.open, function (clientInfo) {
conn.subscribe("[Action name]", function (message) {
});
});
Что помешало бы другим машинам подключаться ко всему серверу WebSocket? Чего мне не хватает?
Ответ №1:
Я решил это, и это минимальное изменение.
Кажется, что XSockets.NET требует настроить WebSocket для прослушивания любого IP-адреса и любого хоста. То есть весь хост должен быть 0.0.0.0:7532
.
Удивительно, но я нашел решение в комментарии к этому XSockets.Страница сетевой документации (создание пользовательской конфигурации …):
VJ: Хорошо. Итак, у меня есть обновление проблемы, о которой я упоминал выше. Возможное решение, которое в любом случае для меня.
- В CustomConfigLoader я собираюсь добавить ip-адрес как 0.0.0.0, что означает, что мой сервер XSockets будет прослушивать с любого IP-адреса. Следовательно, код будет выглядеть следующим образом: var url=»ws://0.0.0.0:4502/»;
- В Javascript я буду использовать window.Расположение.имя хоста, которое указывает на хост приложения, по сути, на сервер, как известно клиенту, с которым я использую свои XSockets.
Второй шаг уже был тем, что я сделал в своем коде, и первым было то, что сделало трюк (в моем случае я не использовал CustomConfigLoader, но я просто добавил ConfigurationSetting
в 0.0.0.0:7352
качестве IP-адреса хоста / имени хоста).
Ответ №2:
Можете ли вы на самом деле увидеть, что порт открыт извне, если вы запустите сканирование TCP?
Вы пытались использовать wss://
(безопасное) соединение? У вашего сервиса или хостинг-провайдера может быть прозрачный прокси, который не поддерживает websocket. Переход на безопасный режим позволяет избежать проблем с прокси-серверами.
В последней версии нет документации для SSL / TLS XSocket.net , но, вероятно, он очень похож на более старую версию.
Комментарии:
1. Я полагаю, вы о многом догадались! Я не размещаю его во внешней компании. Машина разработки — это виртуальная машина, и она работает там, и если я попытаюсь получить доступ к сайту с хост-компьютера или, например, с моего планшета, весь веб-сокет недоступен. Я пробовал
telnet [host] [port]
, но он не работает как на виртуальной машине, так и на внешнем компьютере.2. Кроме того, я отключил брандмауэр Windows как на виртуальной машине, так и на хост-компьютере.