mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-07-14 11:40:10 +00:00
90 lines
1.5 KiB
JavaScript
90 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
/*
|
|
* Dependencies
|
|
*/
|
|
|
|
var Broadcast = require('./broadcast');
|
|
var EventEmitter = require('events').EventEmitter;
|
|
var inherits = require('./util').inherits;
|
|
|
|
|
|
/*
|
|
* Namespace Constructor
|
|
*
|
|
* - name (string)
|
|
* - item (socket) : a single socket
|
|
* - item (room) : a collection of sockets
|
|
*/
|
|
|
|
var Namespace = function Namespace (name, item) {
|
|
Namespace.__super__.call(this);
|
|
|
|
this.name = name;
|
|
this.item = item;
|
|
this._broadcast = Broadcast.bind(this.item);
|
|
};
|
|
|
|
|
|
/*
|
|
* Inherit from EventEmitter
|
|
*/
|
|
|
|
inherits(Namespace, EventEmitter);
|
|
Namespace.prototype._emit = EventEmitter.prototype.emit;
|
|
|
|
|
|
Namespace.parse = function parse (string) {
|
|
var namespace, event;
|
|
string = string.split('.');
|
|
if (string.length === 2) {
|
|
namespace = string[0];
|
|
event = string[1];
|
|
} else {
|
|
event = string[0];
|
|
}
|
|
return {
|
|
namespace: namespace,
|
|
event: event
|
|
};
|
|
};
|
|
|
|
/*
|
|
* Emit
|
|
*
|
|
* - event (string)
|
|
* - args... (mixed) : any other data you want to send
|
|
*/
|
|
|
|
Namespace.prototype.emit = function emit (event, arg1, arg2, arg3) {
|
|
event = this.name + '.' + event;
|
|
this.item.emit(event, arg1, arg2, arg3);
|
|
};
|
|
|
|
|
|
/*
|
|
* Broadcast
|
|
*
|
|
* - event (string)
|
|
* - args... (mixed)
|
|
*/
|
|
|
|
Namespace.prototype.broadcast = function broadcast (event, arg1, arg2, arg3) {
|
|
event = this.name + '.' + event;
|
|
this._broadcast(event, arg1, arg2, arg3);
|
|
};
|
|
|
|
|
|
/*
|
|
* (Private) Release
|
|
*/
|
|
|
|
Namespace.prototype._release = function release () {
|
|
delete this.name;
|
|
delete this.item;
|
|
delete this._broadcast;
|
|
};
|
|
|
|
|
|
module.exports = Namespace;
|