mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-09-09 11:13:57 +08:00
Merge pull request #5808 from nodets/master
Add socket.io.users definitions
This commit is contained in:
@@ -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);
|
||||
});
|
||||
Vendored
+79
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user