AnyEvent-WebSocket-Server
view release on metacpan or search on metacpan
xt/js/browser.html view on Meta::CPAN
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>AnyEvent::WebSocket::Server</title>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.12.0.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/qunit/qunit-1.12.0.js"></script>
<script>
"use strict";
function getPort() {
return 18888;
// var port_re = new RegExp("port=([0-9]+)");
// if(!port_re.test(document.location)) {
// throw "cannot obtain port number";
// }
// return parseInt(port_re.$1, 10);
}
function createData(base, iteration_num) {
var data = "";
for(var i = 0 ; i < iteration_num ; i++) {
data += base;
}
return data;
}
var test_cases = [
{label: "5 bytes", data: "AAAAA" },
{label: "empty", data: ""},
{label: "zero", data: "0"},
{label: "256 bytes", data: createData("AAAA", 64)},
{label: "64 ki bytes", data: createData("AAAAAAAA", 8 * 1024)},
{label: "256 ki bytes", data: createData("AAAAAAAA", 32 * 1024)},
];
var ws_url = "ws://127.0.0.1:"+ getPort() +"/";
module("connect, send, receive and passive close");
$.each(test_cases, function(i, test_case) {
asyncTest(test_case.label, function() {
var ws = new WebSocket(ws_url);
var exp_received = ["connected", test_case.data];
var received_num = 0;
ws.onopen = function() {
ws.send(test_case.data);
};
ws.onmessage = function(event) {
if(received_num >= exp_received.length) {
ok(false, "too many data received");
}
strictEqual(event.data, exp_received[received_num], "data "+ received_num +" OK");
received_num++;
if(received_num === exp_received.length) {
ws.send("QUIT");
}
};
ws.onclose = function() {
( run in 0.580 second using v1.01-cache-2.11-cpan-39bf76dae61 )