diff --git a/socket.io-redis/socket.io-redis-tests.ts b/socket.io-redis/socket.io-redis-tests.ts
index a417be85f9..0ab6974c7a 100644
--- a/socket.io-redis/socket.io-redis-tests.ts
+++ b/socket.io-redis/socket.io-redis-tests.ts
@@ -1 +1,36 @@
+///
+///
///
+
+import socketIO = require('socket.io');
+import ioRedis = require('socket.io-redis');
+
+function testUsingWithNodeHTTPServer() {
+ var io = socketIO(3000);
+ var adapter = ioRedis({ host: 'localhost', port: 6379 });
+ io.adapter(adapter);
+}
+
+function testRestrictingYourselfToANamespace() {
+ var io = socketIO.listen(80);
+ var adapter = ioRedis({ host: 'localhost', port: 6379 });
+ io.adapter(adapter);
+ var chat = io
+ .of('/chat')
+ .on('connection', function (socket) {
+ socket.emit('a message', {
+ that: 'only'
+ , '/chat': 'will get'
+ });
+ chat.emit('a message', {
+ everyone: 'in'
+ , '/chat': 'will get'
+ });
+ });
+
+ var news = io
+ .of('/news')
+ .on('connection', function (socket) {
+ socket.emit('item', { news: 'item' });
+ });
+}
diff --git a/socket.io-redis/socket.io-redis.d.ts b/socket.io-redis/socket.io-redis.d.ts
index 38c12b305d..fd5713853d 100644
--- a/socket.io-redis/socket.io-redis.d.ts
+++ b/socket.io-redis/socket.io-redis.d.ts
@@ -1,14 +1,113 @@
// Type definitions for socket.io-redis 1.
-// Project: http://socket.io/
-// Definitions by: PROGRE , Damian Connolly , Florent Poujol
+// Project: https://github.com/socketio/socket.io-redis
+// Definitions by: Philipp Holzer
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-declare var io: SocketIORedisStatic;
+///
+///
+
+import { RedisClient } from "redis";
declare module 'socket.io-redis' {
+ var io: SocketIORedisStatic;
+
export = io;
}
interface SocketIORedisStatic {
-
+ /**
+ * Creates a new Redis Adapter
+ * @param uri Is a string like localhost:6379 where your redis server is located.
+ * @param opts An optional parameters object
+ */
+ (uri: string, opts?: SocketIORedis.SocketIORedisOptions): SocketIORedis.RedisAdapter;
+
+ /**
+ * Creates a new Redis Adapter
+ * @param opts A parameters object
+ */
+ (opts: SocketIORedis.SocketIORedisOptions): SocketIORedis.RedisAdapter;
+}
+
+declare namespace SocketIORedis {
+ /**
+ * Options to pass to the redis server when creating it
+ */
+ interface SocketIORedisOptions {
+
+ /**
+ * The optional name of the key to pub/sub events on as prefix
+ * @default socket.io
+ */
+ key?: string;
+
+ /**
+ * The optional host to connect to redis on
+ * @default localhost
+ */
+ host?: string;
+
+ /**
+ * The optional port to connect to redis on
+ * @default 6379
+ */
+ port?: string;
+
+ /**
+ * The optional redis client to publish events on
+ */
+ pubClient?: RedisClient;
+
+ /**
+ * The optional redis client to subscribe to events on
+ */
+ subClient?: RedisClient;
+ }
+
+ interface RedisAdapter extends SocketIO.Adapter {
+
+ /**
+ * This servers key
+ */
+ uid: string;
+
+ /**
+ * The prefix of pub/sub events
+ */
+ prefix: string;
+
+ /**
+ * Optional, the redis client to publish events on
+ */
+ pubClient?: RedisClient;
+
+ /**
+ * Optional, the redis client to subscribe to events on
+ */
+ subClient?: RedisClient;
+
+ /**
+ * Broadcasts a packet
+ * @param packet The packet to broadcast
+ * @param opts Any options to send along:
+ * - rooms: An optional list of rooms to broadcast to. If empty, the packet is broadcast to all sockets
+ * - except: A list of Socket IDs to exclude
+ * - flags: Any flags that we want to send along ('json', 'volatile', 'broadcast')
+ * @param remote The optional flag, whether the packet came from another node
+ */
+ broadcast: {
+ (packet: any, opts: { rooms?: string[]; except?: string[]; flags?: {[flag: string]: boolean} }): void;
+ (packet: any, opts: { rooms?: string[]; except?: string[]; flags?: {[flag: string]: boolean} }, remote?: boolean): void;
+ };
+
+ /**
+ * Removes a socket from all the rooms that it's joined
+ * @param id The ID of the socket that we're removing
+ * @param callback An optional callback to call when the socket has been
+ */
+ delAll: {
+ ( id: string ): void;
+ ( id: string, callback?: ( err?: any ) => void ): void;
+ };
+ }
}