File tree Expand file tree Collapse file tree 4 files changed +42
-12
lines changed
Expand file tree Collapse file tree 4 files changed +42
-12
lines changed Original file line number Diff line number Diff line change @@ -109,6 +109,10 @@ Install ***nodejs*** components in ***application.ext.yii-node-socket.lib.js.ser
109109``` bash
110110$> npm install
111111```
112+ If you get errors issuing this command try the following:
113+ ``` bash
114+ $> npm install --no-bin-links
115+ ```
112116
113117Congratulation, installation completed!
114118
@@ -119,7 +123,7 @@ Congratulation, installation completed!
119123Use (** ./yiic node-socket** )
120124
121125``` bash
122- $> ./yiic node-socket # show help
126+ $> ./yiic help node-socket # show help
123127$> ./yiic node-socket/start # start server
124128$> ./yiic node-socket/stop # stop server
125129$> ./yiic node-socket/restart # restart server
@@ -249,18 +253,25 @@ socket.onConnect(function () {
249253####Emit events
250254
251255You can emit event to:
252- - all clients
256+ - all clients (including the event sender)
257+ - all clients (excluding the event sender - broadcasting. Only javascript currently supports broadcasting. PHP broadcasting coming soon)
253258 - clients in concrete room
254259
255-
256260Global events:
257261
258262``` javascript
259263
260264socket .emit (' global.event' , {
261265 message : {
262266 id : 12 ,
263- title : ' This is a test message'
267+ title : ' This is a test message to all including sender'
268+ }
269+ });
270+
271+ socket .broadcast .emit (' global.event' , {
272+ message : {
273+ id : 12 ,
274+ title : ' This is a test message to all excluding sender'
264275 }
265276});
266277
Original file line number Diff line number Diff line change 44 */
55?>
66<h3>Instruction</h3>
7- <b>Don't forget run nodejs server <i style="color: #079c59">./yiic node-socket start</i> before example usage</b>
7+ <b>Don't forget run nodejs server <i style="color: #079c59">./yiic node-socket/ start</i> before example usage</b>
88<ul>
99 <li>1. Open "Go to this page for catch events example" page for catching events</li>
1010 <li>2. Open "Send simple event" or "Send simple room event" and see result on "Go to this page for catch events example"</li>
Original file line number Diff line number Diff line change 126126 ( scope . type == 'global' ? '' : ':' + scope . id )
127127 ) ;
128128
129+ owner . broadcast = false ;
130+
129131 /**
130132 *
131133 * @param event
136138 socket . emit ( 'event:emit' , {
137139 'event' : event ,
138140 'scope' : scope ,
139- 'data' : data
141+ 'data' : data ,
142+ 'broadcast' : owner . broadcast
140143 } ) ;
144+ owner . broadcast = false ;
141145 } ;
146+
142147 }
143148
144149 /**
648653
649654 var systemEventsHandlerBinder = new SystemEventsHandlerBinder ( this ) ;
650655
656+ this . __defineGetter__ ( 'broadcast' , function ( ) {
657+ self . _eventEmitter . broadcast = true ;
658+ return self ;
659+ } ) ;
660+
651661 this . getId = function ( ) {
652662 return '' ;
653663 } ;
Original file line number Diff line number Diff line change @@ -8,15 +8,24 @@ var public_data = {
88
99 handler : function ( packet ) {
1010 if ( packet [ 'event' ] && packet [ 'scope' ] && packet [ 'scope' ] [ 'type' ] ) {
11+ var client = public_data . componentManager . get ( 'io' ) . of ( '/client' ) ;
1112 if ( packet [ 'scope' ] [ 'type' ] == 'global' ) {
12- // global event -> for all clients
13- public_data . componentManager . get ( 'io' ) . of ( '/client' ) . emit (
14- 'global:' + packet [ 'event' ] ,
15- packet [ 'data' ] || { }
16- ) ;
13+ if ( packet [ 'broadcast' ] === true ) {
14+ // global event -> for all clients excluding sender
15+ client . except ( this . id ) . emit (
16+ 'global:' + packet [ 'event' ] ,
17+ packet [ 'data' ] || { }
18+ ) ;
19+ } else {
20+ // global event -> for all clients including sender
21+ client . emit (
22+ 'global:' + packet [ 'event' ] ,
23+ packet [ 'data' ] || { }
24+ ) ;
25+ }
1726 } else if ( packet [ 'scope' ] [ 'type' ] == 'room' && packet [ 'scope' ] [ 'id' ] ) {
1827 // room event -> for sockets in concrete room
19- public_data . componentManager . get ( 'io' ) . of ( '/ client' ) . in ( 'room:' + packet [ 'scope' ] [ 'id' ] ) . emit (
28+ client . in ( 'room:' + packet [ 'scope' ] [ 'id' ] ) . emit (
2029 'room:' + packet [ 'scope' ] [ 'id' ] + ':' + packet [ 'event' ] ,
2130 packet [ 'data' ] || { } ,
2231 true
You can’t perform that action at this time.
0 commit comments