Проблемы с веб-сайтами, возможно, одна и та же политика происхождения?

У меня есть сайт, размещенный на localhost: 8000. Теперь у меня есть сервер, который прослушивает подключения к websocket на localhost: 8001. Я хотел бы, чтобы мой веб-сайт подключился к этому серверу через websocket api, например

var conn = new WebSocket('ws://localhost:8001');

Но я получаю некоторые ошибки в Chromium 6.0.472.62 при вызове

conn.send('something'); 

Это выглядит так: Ошибка при отсутствии: INVALID_STATE_ERR: исключение DOM 11.

В Firefox 4 (4.0b8pre) я получаю сообщение об ошибке: Была сделана попытка использовать объект, который не является или не используется, "код:" 11

Я думал, что это проблема с рукопожатием, не поддерживающим websocket draft76 на сервере, но я использую http://github.com/miksago/node-websocket-server/tree/master/lib/ws/, который утверждает, что поддерживает проект75 и проект76.

Кроме того, начальное рукопожатие, похоже, работает нормально. Я могу получить ответ от сервера при создании нового WebSocket, однако проблемы возникают при вызове "отправить" со стороны клиента.

Это проблема с той же политикой происхождения, поскольку мой httpserver находится на порту 8000, а сервер веб-сервера - на 8001? Если да, то как я могу обойти это?

Ответ 1

Возможно, вам нужно дождаться, когда начнется событие onopen?

var conn = new WebSocket('ws://localhost:8001');
conn.onopen = function (e) {
    conn.send('something');
}
conn.onmessage = function (e) {
    console.log('got something: ' + e.data);
}

Кроме того, неплохо также подключить события onclose и onerror.