diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 347857633..1d32f8c2f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -291,6 +291,7 @@ All definitions files include a header with the author and editors, so at some p * [socket.io](http://socket.io) (by [William Orr](https://github.com/worr)) * [socket.io-client](http://socket.io) (by [Maido Kaara](https://github.com/v3rm0n)) * [SockJS](https://github.com/sockjs/sockjs-client) (by [Emil Ivanov](https://github.com/vladev)) +* [sockjs-node](https://github.com/sockjs/sockjs-node) (by [Phil McCloghry-Laing](https://github.com/pmccloghrylaing)) * [SoundJS](http://www.createjs.com/#!/SoundJS) (by [Pedro Ferreira](https://bitbucket.org/drk4)) * [Spin](http://fgnass.github.com/spin.js/) (by [Boris Yankov](https://github.com/borisyankov)) * [sqlite3](https://github.com/mapbox/node-sqlite3) (by [Nick Malaguti](https://github.com/nmalaguti)) diff --git a/sockjs-node/sockjs-node-tests.ts b/sockjs-node/sockjs-node-tests.ts new file mode 100644 index 000000000..25e5b496a --- /dev/null +++ b/sockjs-node/sockjs-node-tests.ts @@ -0,0 +1,44 @@ +/// +import sockjs = require("sockjs"); +import http = require("http"); +import stream = require("stream"); + +var server: sockjs.Server, + serverOptions: sockjs.ServerOptions = {}; + +// createServer method +server = sockjs.createServer(); +server = sockjs.createServer(serverOptions); + +// installHandlers method +var httpServer: http.Server = http.createServer(); +server.installHandlers(httpServer); +server.installHandlers(httpServer, serverOptions); + +// serverOptions +serverOptions.sockjs_url = 'http://cdn.sockjs.org/sockjs-0.3.min.js'; +serverOptions.prefix = '/prefix'; +serverOptions.response_limit = 128000; +serverOptions.websocket = true; + +serverOptions.jsessionid = true; +serverOptions.jsessionid = () => true; + +serverOptions.log = (severity, message) => { }; +serverOptions.heartbeat_delay = 25000; +serverOptions.disconnect_delay = 5000; + +// Connection +var connection: sockjs.Connection; + +// on('connection') passes a sockJS connection +server.on('connection', (conn) => { + connection = conn; + conn = connection; +}); + +// connection is a ReadWriteStream +var connectionAsReadWrite: NodeJS.ReadWriteStream = connection; + +connection.on('data', (message: string) => { }); +connection.on('close', () => { }); diff --git a/sockjs-node/sockjs-node.d.ts b/sockjs-node/sockjs-node.d.ts new file mode 100644 index 000000000..99e4663b7 --- /dev/null +++ b/sockjs-node/sockjs-node.d.ts @@ -0,0 +1,56 @@ +// Type definitions for sockjs-node 0.3.x +// Project: https://github.com/sockjs/sockjs-node +// Definitions by: Phil McCloghry-Laing +// DefinitelyTyped: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "sockjs" { + import http = require('http'); + + export interface ServerOptions { + sockjs_url?: string; + prefix?: string; + response_limit?: number; + websocket?: boolean; + jsessionid?: any; + log?: (severity: string, message: string) => void; + heartbeat_delay?: number; + disconnect_delay?: number; + } + + export function createServer(options?: ServerOptions): Server; + + export interface Server extends NodeJS.EventEmitter { + installHandlers(server: http.Server, options?: ServerOptions): any; + + on(event: 'connection', listener: (conn: Connection) => any): Server; + on(event: string, listener: Function): Server; + } + + export interface Connection extends NodeJS.ReadWriteStream { + remoteAddress: string; + remotePort: number; + address: { + [key: string]: { + address: string; + port: number; + }; + }; + headers: { + [key: string]: string; + }; + url: string; + pathname: string; + prefix: string; + protocol: string; + readyState: number; + + close(code?: string, reason?: string): boolean; + destroy(): void; + + on(event: 'data', listener: (message: string) => any): Connection; + on(event: 'close', listener: () => void): Connection; + on(event: string, listener: Function): Connection; + } +}