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 )