-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathSocketController.js
109 lines (91 loc) · 2.92 KB
/
SocketController.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/**
* SocketController
*
* @description :: Server-side logic for managing sockets
* @help :: See http://links.sailsjs.org/docs/controllers
*/
module.exports = {
/**
* `SocketController.subscribers()`
*/
subscribers: function (req, res) {
if (!req.param('room')) return res.badRequest('No `room` specified- please specify the name of the room whose subscribers you want to look up.');
var subscribers = sails.sockets.subscribers(room);
return res.ok(require('util').format(
'The "%s" room currently has %d subscribers: ',
req.param('room'),
subscribers.length,
subscribers
));
},
/**
* `SocketController.id()`
*/
id: function (req, res) {
return res.ok('My socket ID is: ' + sails.sockets.id(req.socket));
},
/**
* `SocketController.socketRooms()`
*/
socketRooms: function (req, res) {
var rooms = sails.sockets.socketRooms(req.socket);
return res.ok(require('util').format(
'My socket is currently subscribed to %d rooms: ',
rooms.length,
rooms
));
},
/**
* `SocketController.rooms()`
*/
rooms: function (req, res) {
var rooms = sails.sockets.rooms();
return res.ok(require('util').format(
'There are currently %d rooms: ',
rooms.length,
rooms
));
},
/**
* `SocketController.join()`
*/
join: function (req, res) {
if (!req.param('room')) return res.badRequest('No room specified- please specify the name of the room to join.');
sails.sockets.join(req.socket, req.param('room'));
return res.ok();
},
/**
* `SocketController.leave()`
*/
leave: function (req, res) {
if (!req.param('room')) return res.badRequest('No room specified- please specify the name of the room to leave.');
sails.sockets.leave(req.socket, req.param('room'));
return res.ok();
},
/**
* `SocketController.broadcast()`
*/
broadcast: function (req, res) {
if (!req.param('room')) return res.badRequest('No `room` specified- please specify the name of the room you want to broadcast this data to.');
if (!req.param('data')) return res.badRequest('No `data` specified- please specify data to send.');
sails.sockets.broadcast(req.socket, req.param('room'), req.param('data'));
return res.ok();
},
/**
* `SocketController.emit()`
*/
emit: function (req, res) {
if (!req.param('socketId')) return res.badRequest('No `socketId` specified- please specify the id of the socket you want to emit this data to.');
if (!req.param('data')) return res.badRequest('No `data` specified- please specify data to send.');
sails.sockets.emit(req.param('socketId'), req.param('data'));
return res.ok();
},
/**
* `SocketController.blast()`
*/
blast: function (req, res) {
if (!req.param('data')) return res.badRequest('No `data` specified- please specify data to send.');
sails.sockets.blast(req.param('data'));
return res.ok();
}
};