forked from bdw429s/socketbox-demo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWebSocket.cfc
46 lines (38 loc) · 1.61 KB
/
WebSocket.cfc
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
component extends="modules.socketbox.models.WebSocketCore" {
application.chatNames = application.chatNames ?: {};
function onMessage( required message, required channel ) {
println("new message: #message#");
// re-broadcast the message
if( message.startsWith( "new-user: " ) ) {
var name = message.replace( "new-user: ", "" );
application.chatNames[ channel.hashCode() ] = name;
broadcastMessage( "new-message: " & name & " has joined the chat" );
updateUserCount()
} else if( message.startsWith( "new-message: " ) ) {
var message = message.replace( "new-message: ", "" );
broadcastMessage( "new-message: " & getUserName( channel ) & ": " & message );
} else if( message.startsWith("user-rename: ") ) {
var newName = message.replace( "user-rename: ", "" );
broadcastMessage( "new-message: " & getUserName( channel ) & " has changed their name to " & newName );
application.chatNames[ channel.hashCode() ] = newName;
updateUserCount()
}
}
function onConnect( required channel ) {
super.onConnect( arguments.channel );
updateUserCount();
}
function onClose( required channel ) {
super.onClose( arguments.channel );
broadcastMessage( "new-message: " & getUserName( channel ) & " has left the chat" );
application.chatNames.delete( channel.hashCode() );
updateUserCount();
}
function updateUserCount() {
var connections = getAllConnections();
broadcastMessage( "num-connections: " & connections.len() & ";" & serializeJSON( application.chatNames.valueArray() ) );
}
function getUserName( required channel ) {
return application.chatNames[ channel.hashCode() ] ?: "Unknown";
}
}