Отправить сообщение WebSocket сразу после рукопожатия - PullRequest
1 голос
/ 04 июля 2011

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

Однако, когда я отправляю его сразу после завершения рукопожатия, я получаю сообщение об ошибке в Chrome:

Status line contains embedded null

Когда я использую setTimeout для отправки сообщения через 100 миллисекунд после рукопожатия, оно работает, но, опять же, оно не работает при использовании 10 миллисекунд с использованием этой техники.

Это выглядит как рукопожатие исообщение добавляется при отправке вместе, если временной интервал между ними невелик (хотя я не уверен, так как не знаю, как просмотреть необработанный WebSocket трафик в Chrome - если кто-то сделает это, я бы хотел это услышатьа также).

Я не хочу, чтобы сервер ждал 100 миллисекунд, потому что это, безусловно, заметно для клиента, и, более того, это выглядит как подвох, а не как хорошее решение.

Как я могу отправить сообщение сразу после рукопожатия?

1 Ответ

5 голосов
/ 04 июля 2011

Я уже разобрался - отправлял, когда было соединение, но это, конечно, перед отправкой рукопожатия.Итак, я делал:

client connected
send message
receive handshake request
send handshake response
...

Я просто изменил свой код, вызвав событие connect в моей библиотеке при отправке рукопожатия, когда действительно установилось соединение WebSocket.

В качестве дополнительного примечания я хотел бы отметить, что chrome: // net-internals / является очень полезной страницей при отладке соединений WebSocket (вы можете легко увидеть рукопожатие запроса / ответа).Я должен был знать, что раньше ...

...