File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ use jsonrpc_core as core;
22
22
23
23
pub use self :: error:: { Error , Result } ;
24
24
pub use self :: metadata:: { MetaExtractor , NoopExtractor , RequestContext } ;
25
- pub use self :: server:: { CloseHandle , Server } ;
25
+ pub use self :: server:: { Broadcaster , CloseHandle , Server } ;
26
26
pub use self :: server_builder:: ServerBuilder ;
27
27
pub use self :: server_utils:: cors:: Origin ;
28
28
pub use self :: server_utils:: hosts:: { DomainsValidation , Host } ;
Original file line number Diff line number Diff line change @@ -38,6 +38,13 @@ impl Server {
38
38
& self . addr
39
39
}
40
40
41
+ /// Returns a Broadcaster that can be used to send messages on all connections.
42
+ pub fn broadcaster ( & self ) -> Broadcaster {
43
+ Broadcaster {
44
+ broadcaster : self . broadcaster . clone ( ) ,
45
+ }
46
+ }
47
+
41
48
/// Starts a new `WebSocket` server in separate thread.
42
49
/// Returns a `Server` handle which closes the server when droped.
43
50
pub fn start < M : core:: Metadata , S : core:: Middleware < M > > (
@@ -160,3 +167,26 @@ impl CloseHandle {
160
167
}
161
168
}
162
169
}
170
+
171
+ /// A Broadcaster that can be used to send messages on all connections.
172
+ #[ derive( Clone ) ]
173
+ pub struct Broadcaster {
174
+ broadcaster : ws:: Sender ,
175
+ }
176
+
177
+ impl Broadcaster {
178
+ /// Send a message to the endpoints of all connections.
179
+ #[ inline]
180
+ pub fn send < M > ( & self , msg : M ) -> Result < ( ) >
181
+ where
182
+ M : Into < ws:: Message > ,
183
+ {
184
+ match self . broadcaster . send ( msg) . map_err ( Error :: from) {
185
+ Err ( error) => {
186
+ error ! ( "Error while running sending. Details: {:?}" , error) ;
187
+ Err ( error)
188
+ }
189
+ Ok ( _server) => Ok ( ( ) ) ,
190
+ }
191
+ }
192
+ }
You can’t perform that action at this time.
0 commit comments