Проблема вот в чем.
Пытаюсь настроить общение 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 рабочая.