Сокеты в NodeJS
Проблема вот в чем.
Пытаюсь настроить общение NodeJS с удаленным демоном (сервер CS 1.6) через сокеты по протоколу UDP. Если честно, раньше работать с сокетами не приходилось, может я чего-то не до понимаю. Демон поддерживает такие запросы, вот дока. У меня родился вот такой код: function(data){ var message = new Buffer('\xff\xff\xff\xffTSource Engine Query\x00'); /* * Пробовал и так: * var message = '\xff\xff\xff\xffTSource Engine Query\x00'; **/ var client = LIBS.dgram.createSocket('udp4'); client.on('message', function(data){ console.log(data); }); client.on('error', function(error){ console.log(error); }); client.send(message, 0, message.length, 27015, 'cs-console.ru'); } Судя по документации, в Node работать с сокетами на UDP может только либа dgram. Собственно, создаем сокет, вешаем обработчики, шлем запрос, а в ответ тишина. Т.е. событие message не наступает. Может я чего-то упустил, может запрос неверный. Сам демон запущен. Вот рабочий пример реализации такого общения на PHP: //send info command $command = "\xff\xff\xff\xffTSource Engine Query\x00"; //write command on socket fputs($this->socket, $command, strlen($command)); //get results from server $buffer = fread ($this->socket, 1); $status = socket_get_status($this->socket); // Sander's fix: if ($status["unread_bytes"] > 0) { $buffer .= fread($this->socket, $status["unread_bytes"]); } // Далее идет парсинг ответа Помогите, я уже не знаю что ещё можно покрутить :( UPD: На всякий случай скажу, что родной тест test-dgram-udp4.js отрабатывает на ура, поэтому либа dgram рабочая. |
Проблема решена:
var message = new Buffer('\xff\xff\xff\xffTSource Engine Query\x00', 'ascii'); |
Подскажи плиз а как ловить ответ сервака ?
|
Верно, при создании буффера из строки, если кодировка не указана то используется utf-8.
|
Часовой пояс GMT +3, время: 00:39. |