WebSocket работает только при выполнении локального файла: /// страница - PullRequest
1 голос
/ 06 февраля 2011

Я экспериментирую с HTML5 WebSockets, и мой базовый сценарий клиент / сервер работает с использованием Nugget . Однако это работает только тогда, когда я выполняю локальный файл HTML (file:///); как только я выполню его через http://localhost/, произойдет сбой.

Итак, подключение к localhost из file:/// HTML-файла работает, но подключение к localhost через http://localhost/ не удается. Это странно и раздражает, потому что я хочу использовать его в своей домашней сети.

Я подумал, что, возможно, причина в том, что источник не тот (разные порты), но это не может быть причиной, так как порты должны отличаться, чтобы не позволить Apache отвечать на запросы WebSocket.

Сам код клиента находится в его самой основной форме:

var ws;

function wsi() {
 ws = new WebSocket('ws://localhost:8887/consoleappsample');

 ws.onmessage = function (evt) {
  alert(evt.data);
 }
}

window.onload = wsi;

Кто-то видит, что я могу делать неправильно?

1 Ответ

2 голосов
/ 06 февраля 2011

Мне удалось решить это в конце концов.

На сервере необходимо добавить следующее (* вместо null), замените, конечно, x:

var nugget = new WebSocketServer(8887, "*", "ws://192.168.x.x:8887");

Затем в HandshakeHandler.cs добавьте это (там, где в данный момент нет последнего условия):

if (hasRequiredFields && "ws://"+ClientHandshake.Host == Location && (ClientHandshake.Origin == Origin || Origin=="*"))

Спасибо за все ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...