@@ -32,6 +32,17 @@ module.exports = function (wss) {
3232 socket . isAlive = true ;
3333 const uuid = utils . uuid ( Math . random ( ) . toString ( ) ) ;
3434
35+ const broadcastRoomExceptSender = ( data ) => {
36+ Object . entries ( rooms [ data . room ] ) . forEach ( ( [ , sock ] ) => {
37+ if ( sock === socket ) {
38+ sock . send ( JSON . stringify ( {
39+ code : "OK" ,
40+ time : Date . now ( ) ,
41+ } ) ) ;
42+ } else sock . send ( JSON . stringify ( data ) ) ;
43+ } ) ;
44+ }
45+
3546 const leave = room => {
3647 if ( ! rooms [ room ] [ uuid ] ) return ;
3748 // if the one exiting is the last one, destroy the room
@@ -48,19 +59,13 @@ module.exports = function (wss) {
4859 switch ( data . event ) {
4960 case 'update' :
5061 try {
51- Object . entries ( rooms [ data . room ] ) . forEach ( ( [ , sock ] ) => {
52- if ( sock === socket ) {
53- sock . send ( JSON . stringify ( {
54- code : "OK" ,
55- uuid : data [ 'uuid' ] ,
56- time : Date . now ( ) ,
57- } ) ) ;
58- } else sock . send ( JSON . stringify ( data ) ) ;
59- } ) ;
62+ broadcastRoomExceptSender ( data ) ;
6063 db . updateLastViewedDate ( data . room ) ;
6164 db . applyRequests ( data . room , data . data ) ;
6265 } catch ( err ) {
63- throw new Error ( err ) ;
66+ if ( config . DEBUG ) {
67+ console . error ( err ) ;
68+ }
6469 }
6570 break ;
6671 case 'join' :
@@ -72,6 +77,37 @@ module.exports = function (wss) {
7277 rooms [ data . room ] [ uuid ] = socket ;
7378 }
7479 break ;
80+
81+ case 'language' :
82+ try {
83+ broadcastRoomExceptSender ( data ) ;
84+ db . changeLanguage ( data . room , data . language ) ;
85+ } catch ( err ) {
86+ if ( config . DEBUG ) {
87+ console . error ( err ) ;
88+ }
89+ }
90+ break ;
91+ case 'changeTabSize' :
92+ try {
93+ broadcastRoomExceptSender ( data ) ;
94+ db . changeTabSize ( data . room , data . tabSize ) ;
95+ } catch ( err ) {
96+ if ( config . DEBUG ) {
97+ console . error ( err ) ;
98+ }
99+ }
100+ break ;
101+ case 'changeCustomName' :
102+ try {
103+ broadcastRoomExceptSender ( data ) ;
104+ db . changeCustomName ( data . customName ) ;
105+ } catch ( err ) {
106+ if ( config . DEBUG ) {
107+ console . error ( err ) ;
108+ }
109+ }
110+ break ;
75111 case 'ping' :
76112 socket . send ( 'pong' ) ;
77113 break ;
0 commit comments