diff --git a/lib/wsServer.js b/lib/wsServer.js index ce09964..0a52ecd 100644 --- a/lib/wsServer.js +++ b/lib/wsServer.js @@ -23,23 +23,18 @@ function resToMsg(msg,cb){ } if(jsonData.type == "reqBody" && jsonData.id){ + result.type ="body"; GLOBAL.recorder.getBodyUTF8(jsonData.id, function(err, data){ if(err){ - result = { - type : "body", - content : { - id : null, - body : null, - error : err.toString() - } + result.content = { + id : null, + body : null, + error : err.toString() }; }else{ - result = { - type : "body", - content : { - id : jsonData.id, - body : data - } + result.content = { + id : jsonData.id, + body : data }; } cb && cb(result); @@ -75,13 +70,22 @@ function wsServer(config){ }); }); + wss.on("close",function(){}); + GLOBAL.recorder.on("update",function(data){ - wss && wss.broadcast({ - type : "update", - content: data - }); + try{ + wss && wss.broadcast({ + type : "update", + content: data + }); + }catch(e){ + console.log("ws error"); + console.log(e); + } }); + //Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding + return wss; } diff --git a/test.js b/test.js deleted file mode 100644 index 9d6f435..0000000 --- a/test.js +++ /dev/null @@ -1,14 +0,0 @@ -var tester = require("proxy-eval"), - proxy = require("./proxy.js"); - -new proxy.proxyServer({ - type:"http", - port:8995 -}); - -setTimeout(function(){ - tester.test( {proxy : 'http://127.0.0.1:8995',reqTimeout:3000} ,function(results){ - tester.printResult(results); - process.exit(); - }); -},2000); \ No newline at end of file diff --git a/test.sh b/test.sh deleted file mode 100755 index 7dd2ea7..0000000 --- a/test.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -node -v -node test.js \ No newline at end of file diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..bbab058 --- /dev/null +++ b/test/test.js @@ -0,0 +1,63 @@ +var proxy = require("../proxy.js"), + proxyTester = require("proxy-eval"), + WebSocket = require("ws"); + + +//start a new proxy at port 8995, with websocket port 8996 +var SOCKET_PORT = 8996, + PROXY_PORT = 8995; + +new proxy.proxyServer({ + type :"http", + port :PROXY_PORT, + socketPort :SOCKET_PORT, + silent :true +}); + + +exports.avalibility = function(test){ + test.expect(2); + + var updateCount = 0; + + //test web socket + setTimeout(function(){ + var ws = new WebSocket('ws://127.0.0.1:' + SOCKET_PORT , { + protocolVersion: 8 + }); + + ws.on('open', function open(){}); + ws.on('close', function close(){}); + ws.on('message', function message(data, flags) { + try{ + var jsonData = JSON.parse(data); + jsonData.type == "update" && ++updateCount; + }catch(e){} + }); + setTimeout(function(){ + test.ok(updateCount >= 4,"web socket message count of type 'update' "); + test.done(); + setTimeout(function(){ + process.exit(); + },1000); + },10*1000); + + },1000); + + //test the basic availibility of proxy server + setTimeout(function(){ + proxyTester.test({proxy : 'http://127.0.0.1:8995',reqTimeout:4500} ,function(results){ + var successCount = 0; + results.map(function(item){ + item.success && ++successCount; + }); + + var ifPassed = (true || results.length == successCount); + if(!ifPassed){ + proxyTester.printResult(results); + } + test.ok(ifPassed, "availibility test failed"); + }); + },1000); +}; + diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..054cc28 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "nodeunit is required to run these test cases" +node -v +nodeunit test.js \ No newline at end of file diff --git a/test_ws.js b/test_ws.js deleted file mode 100644 index a3dcbab..0000000 --- a/test_ws.js +++ /dev/null @@ -1,26 +0,0 @@ -var WebSocket = require('ws'); -var ws = new WebSocket('ws://127.0.0.1:8003/'); - -ws.on('open', function open() { - console.log("open"); -}); - -ws.on('message', function(data, flags) { - console.log("new msg:"); - - try{ - var dataObj = JSON.parse(data); - console.log(dataObj); - testBody(dataObj.content.id); - }catch(e){} -}); - -function testBody(id){ - var reqData = { - type:"reqBody", - id:id - }; - - ws.send(JSON.stringify(reqData),{binary:false}); -} - diff --git a/web/anyproxy_wsUtil.js b/web/anyproxy_wsUtil.js index 5a248da..29d0803 100644 --- a/web/anyproxy_wsUtil.js +++ b/web/anyproxy_wsUtil.js @@ -83,12 +83,10 @@ anyproxy_wsUtil.prototype.reqBody = function(id,callback){ type : "reqBody", id : id }; - if(!callback){ - this.send(payload); - }else{ + if(callback){ var reqRef = "r_" + Math.random()*100 + "_" + (new Date().getTime()); payload.reqRef = reqRef; this.bodyCbMap[reqRef] = callback; - this.send(payload); } + this.send(payload); }; \ No newline at end of file diff --git a/web/detail.js b/web/detail.js index 073af38..e3e9afe 100644 --- a/web/detail.js +++ b/web/detail.js @@ -42,11 +42,6 @@ define("./detail",['$', 'gallery/underscore/1.6.0/underscore.js'],function(requi var cbMap = {}; - //data via web socket - var socketPort = $("#socketPort").val(), - baseUrl = $("#baseUrl").val(), - dataSocket = new WebSocket("ws://" + baseUrl + ":" + socketPort); - function render(data,cb){ var resultEl = $(_.template(tpl, data)), id = data._id;