Merge pull request #5808 from nodets/master

Add socket.io.users definitions
This commit is contained in:
Horiuchi_H
2015-09-15 11:41:35 +09:00
2 changed files with 137 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
/// <reference path="../socket.io/socket.io.d.ts"/>
/// <reference path="socket.io.users.d.ts" />
/// <reference path="../node/node.d.ts" />
/// <reference path="../express/express.d.ts" />
var express = require('express');
var app = express();
var httpServer = require('http').createServer(app);
var io = require('socket.io')(httpServer);
import ioUsers = require("socket.io.users");
ioUsers.Session(app, {
"secret": "socket.io.users secret test",
"resave": true,
"saveUninitialized": true
});
io.use(ioUsers.Middleware());
var users = ioUsers.Users.of("/");
var userDisconnected = (user: ioUsers.User) => {
console.log(user.get("username") + " has disconnected from all web browser windows or/and tabs");
}
var setUsername = (user: ioUsers.User, data: any) => {
console.log(user.ip + ' is for first time visiting our site. He/she wants ' + data.username + ' for username');
user.set("username", data.username);
}
var joinRoom = (user: ioUsers.User, roomToJoin: string) => {
console.log(user.get("username") + ' joined to ' + roomToJoin);
}
var leaveRoom = (user: ioUsers.User, roomToJoin: string) => {
console.log(user.get("username") + ' joined to ' + roomToJoin);
}
var sendMessage = (user: ioUsers.User, data: any) => {
console.log(user.get("username") + 'send ' + data.content + ' to room: ' + data.room);
}
users.on('disconnected', userDisconnected);
users.on('set username', setUsername);
users.on('join room', joinRoom); //notify other = user joined room or (GLOBAL) room created.
users.on('leave room', leaveRoom); //notify other = user left room or (GLOBAL) room removed.
users.on("send message", sendMessage); //notify other = receive message.
httpServer.on('uncaughtException', function(err: any) {
console.log(err);
})
var httpPort = 80;
httpServer.listen(httpPort, function() {
console.log("Server is running on " + httpPort);
});
+79
View File
@@ -0,0 +1,79 @@
// Type definitions for socket.io.users
// Project: https://github.com/nodets/socket.io.users
// Definitions by: Makis Maropoulos <https://github.com/kataras>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../node/node.d.ts" />
/// <reference path="../express/express.d.ts" />
/// <reference path="../express-session/express-session.d.ts" />
/// <reference path="../socket.io/socket.io.d.ts" />
declare module "socket.io.users" {
import { EventEmitter } from 'events';
import { Application } from "express";
import { SessionOptions } from "express-session";
var CONNECTION_EVENTS: string[];
var Middleware: () => (socket: SocketIO.Socket, next: () => any) => void;
var Session: (app: Application, options?: SessionOptions) => void;
type SocketUserList = {
[namespace: string]: Users;
};
class Namespaces {
private static socketUsersList: any;
static attach(namespace: string, socketUsersObj: Users): void;
static get(namespace: string): Users;
}
class User {
id: string | number;
socket: SocketIO.Socket;
sockets: SocketIO.Socket[];
rooms: string[];
ip: string;
remoteAddresses: string[];
store: any;
attach(socket: SocketIO.Socket): void;
detachSocket(socket: SocketIO.Socket): void;
detach(): void;
join(room: string): boolean;
leave(room: string): void;
leaveAll(): void;
/** same as in, checks if this user is inside a room */
belong(room: string): boolean;
/** same as belong, checks if this user is inside a room */
in(room: string): boolean;
set(key: string, value: any, callback?: () => void): void;
get: (key: string) => any;
toString(): string;
emit(...args: any[]): void;
to(room: string): SocketIO.Socket;
}
class Users extends EventEmitter {
namespace: string;
users: User[];
constructor(namespace?: string);
static of(namespace?: string): Users;
takeId: (request: any) => string | number;
create(socket: SocketIO.Socket): User;
getById(id: string | number): User;
get(socket: SocketIO.Socket): User;
list(): User[];
size(): number;
push(_user: User): void;
add(socket: SocketIO.Socket): User;
indexOf(user: User): number;
remove(user: User): void;
room(room: string): User[];
in(room: string): User[];
from(room: string): User[];
update(user: User): void;
emitAll(...args: any[]): void;
registerSocketEvents(currentUser: User): void;
}
}