Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2011, 14:25
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сокеты в 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 рабочая.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 14.08.2011 в 14:33.
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2011, 17:08
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Проблема решена:
var message = new Buffer('\xff\xff\xff\xffTSource Engine Query\x00', 'ascii');
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2011, 13:23
Новичок на форуме
Отправить личное сообщение для wgol Посмотреть профиль Найти все сообщения от wgol
 
Регистрация: 24.09.2011
Сообщений: 1

Подскажи плиз а как ловить ответ сервака ?
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2011, 15:10
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Верно, при создании буффера из строки, если кодировка не указана то используется utf-8.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nodejs - где конструктор Request Riim AJAX и COMET 4 29.07.2011 17:12
NodeJS еще раз просьба добавить раздел mycoding Сайт Javascript.ru 56 14.03.2011 16:32
NodeJS и все с ним связанное PeaceCoder Общие вопросы Javascript 41 04.02.2011 19:49
Comet: NodeJS - с чего начать разработку? Vulkan AJAX и COMET 13 27.11.2010 19:25