SockJS

 view release on metacpan or  search on metacpan

t-vendor/html/src/tests.coffee  view on Meta::CPAN

protocols = ['websocket',
        'xdr-streaming',
        'xhr-streaming',
        'iframe-eventsource',
        'iframe-htmlfile',
        'xdr-polling',
        'xhr-polling',
        'iframe-xhr-polling',
        'jsonp-polling']

newSockJS = (path, protocol) ->
    url = if /^http/.test(path) then path else client_opts.url + path
    options = jQuery.extend({}, client_opts.sockjs_opts)
    if protocol
        options.protocols_whitelist = [protocol]
    return new SockJS(url, null, options)

echo_factory_factory = (protocol, messages) ->
    return ->
        expect(2 + messages.length)
        a = messages.slice(0)
        r = newSockJS('/echo', protocol)
        r.onopen = (e) ->
            #log('onopen ' + e)
            ok(true)
            r.send(a[0])
        r.onmessage = (e) ->
            #log('onmessage ' + e);
            x = ''+a[0]
            if e.data != x
                for i in [0...e.data.length]
                    if e.data.charCodeAt(i) != x.charCodeAt(i)
                        xx1 = ('0000' + x.charCodeAt(i).toString(16)).slice(-4)
                        xx2 = ('0000' + e.data.charCodeAt(i).toString(16)).slice(-4)
                        log('source: \\u' + xx1 + ' differs from: \\u' + xx2)
                        break
            equal(e.data, '' + a[0])
            a.shift()
            if typeof a[0] is 'undefined'
                r.close()
            else
                r.send(a[0])
        r.onclose = (e) ->
            if a.length
                ok(false, "Transport closed prematurely. " + e)
            else
                ok(true)
            start()

factor_echo_basic = (protocol) ->
    messages = [ 'data' ]
    return echo_factory_factory(protocol, messages)

factor_echo_rich = (protocol) ->
    messages = [ [1,2,3,'data'], null, false, "data", 1, 12.0, {a:1, b:2} ]
    return echo_factory_factory(protocol, messages)


factor_echo_unicode = (protocol) ->
    messages = [
        "Τη γλώσσα μου έδωσαν ελληνική το σπίτι φτωχικό στις αμμουδιές του ",
        "ღმერთსი შემვედრე, ნუთუ კვლა დამხსნას სოფლისა შრომასა, ცეცხლს, წყალს",
        "⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑",

t-vendor/html/src/tests.coffee  view on Meta::CPAN

Далее последовал тур по стране, выступления в супермаркетах и работа на разогреве у групп 'N Sync и Backstreet Boys.
[править]1999—2000: Ранний коммерческий успех
Ð’ октябре 1998 года вышел дебютный сингл Бритни Спирс «…Baby One More Time» . Песня имела огромный успех, в первые же недели возглавила международÐ...
Ð’ 1999 году Бритни снялась для апрельского номера журнала Rolling Stone. Откровенные фотографии спровоцировали слухи о том, что 17-летняя звезда Ñ...
Вслед за успешным дебютом последовал второй альбом певицы «Oops!... I Did It Again», также стартовавший на 1-м месте в США. Продажи за первую неделю...
[править]2001—2003: Вершина карьеры


Исполняя «Me Against the Music»
Успех Спирс сделал её заметной фигурой и в музыкальной индустрии, и в поп-культуре. В начале 2001 года она привлекла внимание «Пепси», эта к...
В ноябре 2001 года вышел третий альбом Спирс — Britney. Альбом дебютировал на первом месте в США с продажами в 745 744 пластинок за первую неделю, ...
В этом же году Спирс рассталась с солистом 'N Sync Джастином Тимберлейком, с которым встречалась 4 года.
Бритни вернулась на сцену в августе 2003 года.
Ð’ ноябре 2003 года вышел четвёртый студийный альбом Спирс In The Zone. Бритни участвовала в написании восьми из тринадцати композиций, а также Ð...
[править]2007—2008: Возвращение к музыке
В начале 2007 года после двухлетнего перерыва Спирс приступила к записи нового сольного альбома, продюсерами которого выступили Nate «Danja» H...
В мае 2007 года Спирс в составе коллектива «The M and M’s» дала 6 концертов в рамках тура «House of Blues» в Лос-Анджелесе, Сан-Диего, Анахайме, Лас-Вега...
30 августа 2007 года на волнах нью-йоркской радиостанции Z100 состоялась премьера песни «Gimme More», первого сингла с нового альбома Спирс.[5] СинÐ...
9 сентября 2007 года Спирс исполнила «Gimme More» на церемонии вручения наград MTV Video Music Awards. Выступление оказалось неудачным; Спирс выглядела н...
Несмотря на это, в начале октября 2007 года сингл «Gimme More» достиг 3-го места в чарте Billboard Hot 100, став таким образом одним из самых успешных син...
    ]
    return echo_factory_factory(protocol, messages)

factor_echo_special_chars = (protocol) ->
    messages = [
        " ",
        "\u0000",
        "\xff",
        "\xff\x00",
        "\x00\xff",
        " \r ",
        " \n ",
        " \r\n ",
        "\r\n",
        "",
        "message\t",
        "\tmessage",
        "message ",
        " message",
        "message\r",
        "\rmessage",
        "message\n",
        "\nmessage",
        "message\xff",
        "\xffmessage",
        "A",
        "b",
        "c",
        "d",
        "e",
        "\ufffd",
        "\ufffd\u0000",
        "message\ufffd",
        "\ufffdmessage",
    ]
    return echo_factory_factory(protocol, messages)


factor_echo_large_message = (protocol) ->
    # Should be larger than 128k - the limit for a single request in
    # some streaming transports.
    messages = [
        Array(Math.pow(2,1)).join('x'),
        Array(Math.pow(2,2)).join('x'),
        Array(Math.pow(2,4)).join('x'),
        Array(Math.pow(2,8)).join('x'),
        Array(Math.pow(2,13)).join('x'),
        Array(Math.pow(2,13)).join('x'),
    ]
    return echo_factory_factory(protocol, messages)


batch_factory_factory = (protocol, messages) ->
    return ->
        expect(3 + messages.length)
        r = newSockJS('/echo', protocol)
        ok(r)
        counter = 0
        r.onopen = (e) ->
            ok(true)
            for msg in messages
                r.send(msg)
        r.onmessage = (e) ->
            equals(e.data, messages[counter])
            counter += 1
            if counter is messages.length
                r.close()
        r.onclose = (e) ->
            if counter isnt messages.length
                ok(false, "Transport closed prematurely. " + e)
            else
                ok(true)
            start()

factor_batch_large = (protocol) ->
    messages = [
        Array(Math.pow(2,1)).join('x'),
        Array(Math.pow(2,2)).join('x'),
        Array(Math.pow(2,4)).join('x'),
        Array(Math.pow(2,8)).join('x'),
        Array(Math.pow(2,13)).join('x'),
        Array(Math.pow(2,13)).join('x'),
    ]
    return batch_factory_factory(protocol, messages)


batch_factory_factory_amp = (protocol, messages) ->
    return ->
        expect(3 + messages.length)
        r = newSockJS('/amplify', protocol)
        ok(r)
        counter = 0
        r.onopen = (e) ->
            ok(true)
            for msg in messages
                r.send(''+msg)
        r.onmessage = (e) ->
            equals(e.data.length, Math.pow(2, messages[counter]), e.data)
            counter += 1
            if counter is messages.length
                r.close()



( run in 1.161 second using v1.01-cache-2.11-cpan-39bf76dae61 )