6
我使用標準配置的sockjs。如何測試node.js websocket服務器?
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);
}
})
};
現在我的問題是,我想爲我的代碼進行測試(比從未猜到更晚),我不知道該怎麼做。我開始使用mocha + supertest編寫正常的http測試,但我只是不知道如何處理websocket。
我想通過所有測試只有一個websocket連接重用,我在第一條消息後綁定websocket連接和用戶會話,我也想測試持久性。
如何使用ws客戶端的onmessage事件並在我的測試中使用它?測試如何分辨收到的消息並知道他們應該等待哪一個?