Показать сообщение отдельно
  #1 (permalink)  
Старый 18.02.2017, 21:02
Интересующийся
Отправить личное сообщение для zippel Посмотреть профиль Найти все сообщения от zippel
 
Регистрация: 02.05.2016
Сообщений: 12

Не могу понять как передать запрос по WAMP протоколу используя autobahn на Node.js
Node.js v6.9.5
Installed npms: AutobahnJS, crypto-js


В общем задача: по wss установить сессию:

1). В каждом POST запросе должен быть int параметр nonce, который всегда больше своего предыдущего брата. Ну вы понимаете зачем.. И еще один параметр command "action"

2). Так же в каждом запросе должны присутствовать заголовки(хедера) key и Sign. К тому же Sign эта хеш, полученный в результате кодировки значения параметра command, который в теле POST запроса, ключом "secret" по алгоритму HMAC-SHA512.

Буду просто очень благодарен за помощь, ибо сам нисеку в node ваще, но очень сочно надо и прям занялся. Но.. вот такая вот проблемо. Хотя кое что я смог. Установить сессию без этих параметров, но на обычный wss адрес. Не тот который мне нужен. Тот который мне нужен, на нем я не могу установить соединение :*

Пример как это должно работать.
// в принципе я не уверен только в том правильно ли шифрую хеш
// и не могу понять почему curdata() возвращает всегда одно и тоже число, когда выполняется connection.open()

var autobahn = require('autobahn');

const crypto = require('crypto');
const hash = crypto.createHmac("sha512", "secret");

var post_request = 'getInfo';
var wsuri = "wss://adress/worker?key=somekey" + "&command=" + post_request + "&sign=" + hash.digest(post_request) + "&nonce=" + curdata();

var connection = new autobahn.Connection({
	url: wsuri,
	realm: "realm1"
});

connection.onopen = function (session) {
	console.log("Websocket connection, good job..");
}

connection.onclose = function () {
	console.log("Websocket connection closed");
}

connection.open();

function curdata() {
	return Date.now();
}

Последний раз редактировалось zippel, 18.02.2017 в 22:21.
Ответить с цитированием