@@ -40,25 +40,6 @@ public WebSocketServer()
40
40
logLevel = Function . Call < string > ( Hash . GET_CONVAR , "websocket_debug" , "false" ) == "true" ? LogLevels . Debug : LogLevels . Info ;
41
41
authorization = Function . Call < string > ( Hash . GET_CONVAR , "websocket_authorization" , "" ) ;
42
42
43
- webSockets = new List < WebSocket > ( ) ;
44
- EventHandlers [ "WebSocketServer:broadcast" ] += new Action < dynamic > ( ( dynamic message ) =>
45
- {
46
- lock ( webSockets )
47
- {
48
- foreach ( var webSocket in webSockets )
49
- {
50
- if ( webSocket . IsConnected )
51
- {
52
- webSocket . WriteStringAsync ( ( string ) message , CancellationToken . None ) ;
53
- }
54
- else
55
- {
56
- webSockets . Remove ( webSocket ) ;
57
- }
58
- }
59
- }
60
- } ) ;
61
-
62
43
IPAddress listeningHost = IPAddress . Loopback ;
63
44
IPAddress . TryParse ( Function . Call < string > ( Hash . GET_CONVAR , "websocket_host" , "127.0.0.1" ) , out listeningHost ) ;
64
45
int listeningPort = Function . Call < int > ( Hash . GET_CONVAR_INT , "websocket_port" , 80 ) ;
@@ -92,17 +73,51 @@ public WebSocketServer()
92
73
TriggerEvent ( "WebSocketServer:onMessage" , msg ) ;
93
74
} ;
94
75
95
- try
76
+ EventHandlers [ "onResourceStart" ] += new Action < dynamic > ( ( dynamic resourceName ) =>
96
77
{
97
- server . Start ( ) ;
98
- Tick += server . ListenAsync ;
78
+ if ( ( string ) resourceName == "WebSocketServer" )
79
+ {
80
+ try
81
+ {
82
+ server . Start ( ) ;
83
+ Tick += server . ListenAsync ;
99
84
100
- Log ( "Started at " + endpoint . ToString ( ) ) ;
101
- }
102
- catch ( Exception e )
85
+ Log ( "Started at " + endpoint . ToString ( ) ) ;
86
+ }
87
+ catch ( Exception e )
88
+ {
89
+ Log ( "Can't start server at " + endpoint . ToString ( ) + ": " + e . Message ) ;
90
+ }
91
+ }
92
+ } ) ;
93
+
94
+ EventHandlers [ "onResourceStop" ] += new Action < dynamic > ( ( dynamic resourceName ) =>
103
95
{
104
- Log ( "Can't start server at " + endpoint . ToString ( ) + ": " + e . Message ) ;
105
- }
96
+ if ( ( string ) resourceName == "WebSocketServer" )
97
+ {
98
+ server . Stop ( ) ;
99
+ server . Dispose ( ) ;
100
+ }
101
+ } ) ;
102
+
103
+ webSockets = new List < WebSocket > ( ) ;
104
+ EventHandlers [ "WebSocketServer:broadcast" ] += new Action < dynamic > ( ( dynamic message ) =>
105
+ {
106
+ lock ( webSockets )
107
+ {
108
+ foreach ( var webSocket in webSockets )
109
+ {
110
+ if ( webSocket . IsConnected )
111
+ {
112
+ webSocket . WriteStringAsync ( ( string ) message , CancellationToken . None ) ;
113
+ }
114
+ else
115
+ {
116
+ webSockets . Remove ( webSocket ) ;
117
+ }
118
+ }
119
+ }
120
+ } ) ;
106
121
}
107
122
108
123
private void Log ( string message , LogLevels level = LogLevels . Info )
0 commit comments