Я использую sockjs со стандартной конфигурацией.Как проверить сервер websocket node.js?
var ws = sockjs.createServer();
ws.on('connection', function(conn) {
conn.on('data', function(message) {
wsParser.parse(conn, message)
});
conn.on('close', function() {
});
});
var server = http.createServer(app);
ws.installHandlers(server, {prefix:'/ws'});
server.listen(config.server.port, config.server.host);
wsParser.parse
функция работает следующим образом:
function(conn, message) {
(...)
switch(message.action) {
case "titleAutocomplete":
titleAutocomplete(conn, message.data);
break;
(...) // a lot more of these
}
Каждый метод, называемый коммутатор отправляет сообщение клиенту.
var titleAutocomplete = function(conn, data) {
redis.hgetall("titles:"+data.query, function(err, titles){
if(err) ERR(err);
if(titles) {
var response = JSON.stringify({"action": "titleAutocomplete", "data": {"titles": titles}});
conn.write(response);
}
})
};
Теперь моя проблема заключается в том, что я хотел бы сделать тесты для моего кода (лучше поздно, чем никогда, я думаю), и я понятия не имею, как это сделать. Я начал писать обычные тесты http с помощью mocha + supertest, но я просто не знаю, как обращаться с websockets.
Я хотел бы иметь только одно подключение к Интернету для повторного использования через все тесты, я связываю соединение с веб-узлом с сеансом пользователя после первого сообщения, и я хочу также проверить эту персистенцию.
Как использовать событие onmessage клиента ws и использовать его в моих тестах? Как тесты могут рассказать обо всех полученных сообщениях и узнать, какой из них они должны ждать?