qws
Version:
An HTML5 Web Sockets Server Module
70 lines (64 loc) • 2.02 kB
text/coffeescript
#mocha
e = require 'expect.js'
ws = require '../lib/index.js'
http = require 'http'
net = require 'net'
describe 'WebSocket Server', ->
hs = null
port = null
beforeEach (done)->
hs = new http.Server();
hs.on 'listening', ->
{port} = hs.address()
done()
hs.listen()
afterEach (done)->
hs.close ->
setTimeout done, 50
req = (bin, cb, cbhs) ->
client = net.connect port:port
client.on 'connect', ->
client.write '''
GET ws://localhost:8080/ws HTTP/1.1
Origin: http://localhost:8080
Host: localhost:8080
Sec-WebSocket-Key: TtP40xnf6AdhK2cpyo7vCw==
Upgrade: websocket
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Connection: Upgrade
Sec-WebSocket-Version: 13\r\n\r\n
'''
handShake = null
client.once 'data', (chunk)->
handShake = chunk.toString()
cbhs handShake if cbhs
client.write bin
client.once 'data', (chunk) ->
cb handShake, chunk if cb
it 'createServer', (done) ->
w = ws.createServer hs, (data, msg) ->
e(data).to.be 'abc'
msg.close()
done()
req bin = new Buffer [0x81, 0x03, 0x61, 0x62, 0x63]
e(w).to.be.a ws.Server
it 'createServer compressed', (done) ->
w = ws.createServer hs, (data, msg) ->
e(data).to.be 'abc'
msg.close()
done()
req new Buffer [0xc1, 0x85, 0x2c, 0x12, 0x5c, 0x24, 0x66, 0x5e, 0x16, 0x22, 0x2c]
it 'createFrame', ->
f = ws.createFrame data : new Buffer [0x61, 0x62, 0x63, 0x61, 0x62, 0x63]
e(f).to.be.a ws.Frame
it 'create server but url not matched', (done)->
w = ws.createServer hs, url : '/aa', (data, msg) ->
# e(data).to.be 'abc'
# msg.close()
# done()
req (bin = new Buffer [0x81, 0x03, 0x61, 0x62, 0x63]), null, (handShake) ->
# console.log handShake
e(handShake).to.be.match /^HTTP\/1\.1 400/
e(handShake).to.be.match /url not matched/
done()
# e(w).to.be.a ws.Server