Я играю с NodeJS и WebSockets, есть upgrade event с его параметром голова, как я понял из here, что в основном data that directly trails the headers
, но для моего случая использования это всегда пустой, так что я не действительно знаю, что это значит, я был бы рад, если бы кто-то мог предоставить простой пример использования, когда параметр данных в событии обновления не пуст.NodeJS, WebSockets, реконструкция головы
3
A
ответ
1
Глядя на the source, излучающий это событие обновления в репо узла, вы увидите следующую реализацию:
function socketOnData(d) {
assert(!socket._paused);
debug('SERVER socketOnData %d', d.length);
var ret = parser.execute(d);
onParserExecuteCommon(ret, d);
}
function onParserExecute(ret, d) {
debug('SERVER socketOnParserExecute %d', ret);
onParserExecuteCommon(ret, undefined);
}
function onParserExecuteCommon(ret, d) {
if (ret instanceof Error) {
debug('parse error');
socket.destroy(ret);
} else if (parser.incoming && parser.incoming.upgrade) {
// Upgrade or CONNECT
var bytesParsed = ret;
var req = parser.incoming;
debug('SERVER upgrade or connect', req.method);
if (!d)
d = parser.getCurrentBuffer();
socket.removeListener('data', socketOnData);
socket.removeListener('end', socketOnEnd);
socket.removeListener('close', serverSocketCloseListener);
unconsume(parser, socket);
parser.finish();
freeParser(parser, req, null);
parser = null;
var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade';
if (EventEmitter.listenerCount(self, eventName) > 0) {
debug('SERVER have listener for %s', eventName);
var bodyHead = d.slice(bytesParsed, d.length);
// TODO(isaacs): Need a way to reset a stream to fresh state
// IE, not flowing, and not explicitly paused.
socket._readableState.flowing = null;
self.emit(eventName, req, socket, bodyHead);
...
Передаваемый параметр, bodyHead
, отражает данные из переданного параметра d
на функцию socketOnData
, который является стандартным сокетом data
обработчиком событий. С другой стороны, это может быть undefined
, если onParserExecuteCommon
был вызван от onParserExecute
. Мне нужно будет изучить источник больше, чтобы понять, какие случаи будут применяться в зависимости от того, как ваш сервер реализован. Возможно, вы можете включить журналы отладки, чтобы узнать, какие методы вызывают.
Смежные вопросы
- 1. NodeJS, WebSockets (WS) OpenShift
- 2. Nodejs и webSockets, инициирующие события?
- 3. nodejs cluster messaging vs websockets
- 4. nodejs + WebSockets - отвергает связь с сообщением
- 5. Загрузка файлов с помощью Websockets и Nodejs
- 6. Websockets with nodejs и Symfony 2
- 7. ТриJS, Websockets и NodeJS Эксперимент клиента/сервера
- 8. NodeJS и HTML5 WebSockets не работают вместе
- 9. Лицо 3d-реконструкция
- 10. Websockets & PHP
- 11. Реконструкция массивов
- 12. Реконструкция фляжки
- 13. Реконструкция дизайна
- 14. Реконструкция OpenMP
- 15. Реконструкция плитки
- 16. Реконструкция AutoFixture
- 17. Порт 34037 уже используется Heroku + Nodejs + Express + WebSockets
- 18. NodeJS & Socket.io: Chrome не загружается с помощью WebSockets
- 19. ibm bluemix nodejs и websockets продолжают закрываться на стороне клиента
- 20. сохранить функции от openlayers до postgis через nodejs и websockets
- 21. Загрузить файл от клиента android к nodejs с помощью websockets
- 22. Использование Nginx в качестве обратного прокси для nodejs, игнорирующего websockets
- 23. Реконструкция объекта стека
- 24. Реконструкция Java двух классов
- 25. Реконструкция вложенных наблюдений
- 26. Метрическая 3d-реконструкция
- 27. Реконструкция набора форм
- 28. Реконструкция даты SQL
- 29. Реконструкция реализации кривых
- 30. Ограниченная машина Больцмана - реконструкция
Я думаю, что вы сделали более чем достаточно, спасибо. –