celluloid_pubsub 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3676 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Class: CelluloidPubsub::Client::PubSubWorker
8
+
9
+ &mdash; Documentation by YARD 0.8.7.6
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '../../';
20
+ framesUrl = "../../frames.html#!CelluloidPubsub/Client/PubSubWorker.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="../../_index.html">Index (P)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../../CelluloidPubsub.html" title="CelluloidPubsub (module)">CelluloidPubsub</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Client.html" title="CelluloidPubsub::Client (class)">Client</a></span></span>
36
+ &raquo;
37
+ <span class="title">PubSubWorker</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Class: CelluloidPubsub::Client::PubSubWorker
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName">Object</span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next">CelluloidPubsub::Client::PubSubWorker</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+
88
+
89
+
90
+
91
+
92
+
93
+ <dt class="r2">Includes:</dt>
94
+ <dd class="r2">Celluloid, Celluloid::Logger</dd>
95
+
96
+
97
+
98
+
99
+
100
+ <dt class="r1 last">Defined in:</dt>
101
+ <dd class="r1 last">lib/celluloid_pubsub/client_pubsub.rb</dd>
102
+
103
+ </dl>
104
+ <div class="clear"></div>
105
+
106
+ <h2>Overview</h2><div class="docstring">
107
+ <div class="discussion">
108
+
109
+ <p>worker that subscribes to a channel or publishes to a channel if it used to
110
+ subscribe to a channel the worker will dispatch the messages to the actor
111
+ that made the connection in the first place.</p>
112
+
113
+
114
+ </div>
115
+ </div>
116
+ <div class="tags">
117
+
118
+
119
+ </div>
120
+
121
+
122
+
123
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
124
+ <ul class="summary">
125
+
126
+ <li class="public ">
127
+ <span class="summary_signature">
128
+
129
+ <a href="#actor-instance_method" title="#actor (instance method)">- (Celluloid::Actor) <strong>actor</strong> </a>
130
+
131
+
132
+
133
+ </span>
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+ <span class="summary_desc"><div class='inline'>
147
+ <p>Actor to which callbacks will be delegated to.</p>
148
+ </div></span>
149
+
150
+ </li>
151
+
152
+
153
+ <li class="public ">
154
+ <span class="summary_signature">
155
+
156
+ <a href="#client-instance_method" title="#client (instance method)">- (Celluloid::WebSocket::Client) <strong>client</strong> </a>
157
+
158
+
159
+
160
+ </span>
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+ <span class="summary_desc"><div class='inline'>
174
+ <p>A websocket client that is used to chat witht the webserver.</p>
175
+ </div></span>
176
+
177
+ </li>
178
+
179
+
180
+ <li class="public ">
181
+ <span class="summary_signature">
182
+
183
+ <a href="#connect_blk-instance_method" title="#connect_blk (instance method)">- (Proc) <strong>connect_blk</strong> </a>
184
+
185
+
186
+
187
+ </span>
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+ <span class="summary_desc"><div class='inline'>
201
+ <p>Block that will execute after the connection is opened.</p>
202
+ </div></span>
203
+
204
+ </li>
205
+
206
+
207
+ <li class="public ">
208
+ <span class="summary_signature">
209
+
210
+ <a href="#hostname-instance_method" title="#hostname (instance method)">- (String) <strong>hostname</strong> </a>
211
+
212
+
213
+
214
+ </span>
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+ <span class="summary_desc"><div class='inline'>
228
+ <p>The hostname on which the webserver runs on.</p>
229
+ </div></span>
230
+
231
+ </li>
232
+
233
+
234
+ <li class="public ">
235
+ <span class="summary_signature">
236
+
237
+ <a href="#options-instance_method" title="#options (instance method)">- (Hash) <strong>options</strong> </a>
238
+
239
+
240
+
241
+ </span>
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+ <span class="summary_desc"><div class='inline'>
255
+ <p>The options that can be used to connect to webser and send additional data.</p>
256
+ </div></span>
257
+
258
+ </li>
259
+
260
+
261
+ <li class="public ">
262
+ <span class="summary_signature">
263
+
264
+ <a href="#path-instance_method" title="#path (instance method)">- (String) <strong>path</strong> </a>
265
+
266
+
267
+
268
+ </span>
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+ <span class="summary_desc"><div class='inline'>
282
+ <p>The hostname on which the webserver runs on.</p>
283
+ </div></span>
284
+
285
+ </li>
286
+
287
+
288
+ <li class="public ">
289
+ <span class="summary_signature">
290
+
291
+ <a href="#port-instance_method" title="#port (instance method)">- (String) <strong>port</strong> </a>
292
+
293
+
294
+
295
+ </span>
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+ <span class="summary_desc"><div class='inline'>
309
+ <p>The port on which the webserver runs on.</p>
310
+ </div></span>
311
+
312
+ </li>
313
+
314
+
315
+ </ul>
316
+
317
+
318
+
319
+
320
+
321
+ <h2>
322
+ Instance Method Summary
323
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
324
+ </h2>
325
+
326
+ <ul class="summary">
327
+
328
+ <li class="public ">
329
+ <span class="summary_signature">
330
+
331
+ <a href="#debug_enabled%3F-instance_method" title="#debug_enabled? (instance method)">- (boolean) <strong>debug_enabled?</strong> </a>
332
+
333
+
334
+
335
+ </span>
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+ <span class="summary_desc"><div class='inline'>
346
+ <p>checks if debug is enabled.</p>
347
+ </div></span>
348
+
349
+ </li>
350
+
351
+
352
+ <li class="public ">
353
+ <span class="summary_signature">
354
+
355
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (void) <strong>initialize</strong>(options, &amp;connect_blk) </a>
356
+
357
+
358
+
359
+ </span>
360
+
361
+
362
+ <span class="note title constructor">constructor</span>
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+ <span class="summary_desc"><div class='inline'>
372
+ <p>receives a list of options that are used to connect to the webserver and an
373
+ actor to which the callbacks are delegated to when receiving messages from
374
+ a channel.</p>
375
+ </div></span>
376
+
377
+ </li>
378
+
379
+
380
+ <li class="public ">
381
+ <span class="summary_signature">
382
+
383
+ <a href="#on_close-instance_method" title="#on_close (instance method)">- (void) <strong>on_close</strong>(code, reason) </a>
384
+
385
+
386
+
387
+ </span>
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+ <span class="summary_desc"><div class='inline'>
398
+ <p>callback executes when connection closes.</p>
399
+ </div></span>
400
+
401
+ </li>
402
+
403
+
404
+ <li class="public ">
405
+ <span class="summary_signature">
406
+
407
+ <a href="#on_message-instance_method" title="#on_message (instance method)">- (void) <strong>on_message</strong>(data) </a>
408
+
409
+
410
+
411
+ </span>
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+ <span class="summary_desc"><div class='inline'>
422
+ <p>callback executes when actor receives a message from a subscribed channel
423
+ and parses the message using JSON.parse and dispatches the parsed message
424
+ to the original actor that made the connection.</p>
425
+ </div></span>
426
+
427
+ </li>
428
+
429
+
430
+ <li class="public ">
431
+ <span class="summary_signature">
432
+
433
+ <a href="#on_open-instance_method" title="#on_open (instance method)">- (void) <strong>on_open</strong> </a>
434
+
435
+
436
+
437
+ </span>
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+ <span class="summary_desc"><div class='inline'>
448
+ <p>callback executes after connection is opened and delegates action to actor.</p>
449
+ </div></span>
450
+
451
+ </li>
452
+
453
+
454
+ <li class="public ">
455
+ <span class="summary_signature">
456
+
457
+ <a href="#parse_options-instance_method" title="#parse_options (instance method)">- (void) <strong>parse_options</strong>(options) </a>
458
+
459
+
460
+
461
+ </span>
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+ <span class="summary_desc"><div class='inline'>
472
+ <p>check the options list for values and sets default values if not found.</p>
473
+ </div></span>
474
+
475
+ </li>
476
+
477
+
478
+ <li class="public ">
479
+ <span class="summary_signature">
480
+
481
+ <a href="#publish-instance_method" title="#publish (instance method)">- (void) <strong>publish</strong>(channel, data) </a>
482
+
483
+
484
+
485
+ </span>
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+ <span class="summary_desc"><div class='inline'>
496
+ <p>publishes to a channel some data (can be anything).</p>
497
+ </div></span>
498
+
499
+ </li>
500
+
501
+
502
+ <li class="public ">
503
+ <span class="summary_signature">
504
+
505
+ <a href="#subscribe-instance_method" title="#subscribe (instance method)">- (void) <strong>subscribe</strong>(channel) </a>
506
+
507
+
508
+
509
+ </span>
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+ <span class="summary_desc"><div class='inline'>
520
+ <p>subscribes to a channel .</p>
521
+ </div></span>
522
+
523
+ </li>
524
+
525
+
526
+ </ul>
527
+
528
+
529
+
530
+
531
+ <div id="constructor_details" class="method_details_list">
532
+ <h2>Constructor Details</h2>
533
+
534
+ <div class="method_details first">
535
+ <h3 class="signature first" id="initialize-instance_method">
536
+
537
+ - (<tt>void</tt>) <strong>initialize</strong>(options, &amp;connect_blk)
538
+
539
+
540
+
541
+
542
+
543
+ </h3><div class="docstring">
544
+ <div class="discussion">
545
+
546
+ <p>receives a list of options that are used to connect to the webserver and an
547
+ actor to which the callbacks are delegated to</p>
548
+
549
+ <pre class="code ruby"><code class="ruby">when receiving messages from a channel</code></pre>
550
+
551
+
552
+ </div>
553
+ </div>
554
+ <div class="tags">
555
+ <p class="tag_title">Parameters:</p>
556
+ <ul class="param">
557
+
558
+ <li>
559
+
560
+ <span class='name'>options</span>
561
+
562
+
563
+ <span class='type'>(<tt>Hash</tt>)</span>
564
+
565
+
566
+
567
+ &mdash;
568
+ <div class='inline'>
569
+ <p>the options that can be used to connect to webser and send additional data</p>
570
+ </div>
571
+
572
+ </li>
573
+
574
+ <li>
575
+
576
+ <span class='name'>connect_blk</span>
577
+
578
+
579
+ <span class='type'>(<tt>Proc</tt>)</span>
580
+
581
+
582
+
583
+ &mdash;
584
+ <div class='inline'>
585
+ <p>Block that will execute after the connection is opened</p>
586
+ </div>
587
+
588
+ </li>
589
+
590
+ </ul>
591
+
592
+
593
+
594
+
595
+ <p class="tag_title">Options Hash (<tt>options</tt>):</p>
596
+ <ul class="option">
597
+
598
+ <li>
599
+ <span class="name">:actor</span>
600
+ <span class="type">(<tt>String</tt>)</span>
601
+ <span class="default">
602
+
603
+ </span>
604
+
605
+ &mdash; <div class='inline'>
606
+ <p>The actor that made the connection</p>
607
+ </div>
608
+
609
+ </li>
610
+
611
+ <li>
612
+ <span class="name">:hostname</span>
613
+ <span class="type">(<tt>String</tt>)</span>
614
+ <span class="default">
615
+
616
+ </span>
617
+
618
+ &mdash; <div class='inline'>
619
+ <p>The hostname on which the webserver runs on</p>
620
+ </div>
621
+
622
+ </li>
623
+
624
+ <li>
625
+ <span class="name">:port</span>
626
+ <span class="type">(<tt>String</tt>)</span>
627
+ <span class="default">
628
+
629
+ </span>
630
+
631
+ &mdash; <div class='inline'>
632
+ <p>The port on which the webserver runs on</p>
633
+ </div>
634
+
635
+ </li>
636
+
637
+ <li>
638
+ <span class="name">:path</span>
639
+ <span class="type">(<tt>String</tt>)</span>
640
+ <span class="default">
641
+
642
+ </span>
643
+
644
+ &mdash; <div class='inline'>
645
+ <p>The request path that the webserver accepts</p>
646
+ </div>
647
+
648
+ </li>
649
+
650
+ </ul>
651
+
652
+
653
+
654
+
655
+
656
+ </div><table class="source_code">
657
+ <tr>
658
+ <td>
659
+ <pre class="lines">
660
+
661
+
662
+ 47
663
+ 48
664
+ 49
665
+ 50
666
+ 51
667
+ 52</pre>
668
+ </td>
669
+ <td>
670
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 47</span>
671
+
672
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
673
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
674
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
675
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
676
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
677
+ <span class='kw'>end</span></pre>
678
+ </td>
679
+ </tr>
680
+ </table>
681
+ </div>
682
+
683
+ </div>
684
+
685
+ <div id="instance_attr_details" class="attr_details">
686
+ <h2>Instance Attribute Details</h2>
687
+
688
+
689
+ <span id="actor=-instance_method"></span>
690
+ <div class="method_details first">
691
+ <h3 class="signature first" id="actor-instance_method">
692
+
693
+ - (<tt>Celluloid::Actor</tt>) <strong>actor</strong>
694
+
695
+
696
+
697
+
698
+
699
+ </h3><div class="docstring">
700
+ <div class="discussion">
701
+
702
+ <p>Returns actor to which callbacks will be delegated to</p>
703
+
704
+
705
+ </div>
706
+ </div>
707
+ <div class="tags">
708
+
709
+ <p class="tag_title">Returns:</p>
710
+ <ul class="return">
711
+
712
+ <li>
713
+
714
+
715
+ <span class='type'>(<tt>Celluloid::Actor</tt>)</span>
716
+
717
+
718
+
719
+ &mdash;
720
+ <div class='inline'>
721
+ <p>actor to which callbacks will be delegated to</p>
722
+ </div>
723
+
724
+ </li>
725
+
726
+ </ul>
727
+
728
+ </div><table class="source_code">
729
+ <tr>
730
+ <td>
731
+ <pre class="lines">
732
+
733
+
734
+ 28
735
+ 29
736
+ 30
737
+ 31
738
+ 32
739
+ 33
740
+ 34
741
+ 35
742
+ 36
743
+ 37
744
+ 38
745
+ 39
746
+ 40
747
+ 41
748
+ 42
749
+ 43
750
+ 44
751
+ 45
752
+ 46
753
+ 47
754
+ 48
755
+ 49
756
+ 50
757
+ 51
758
+ 52
759
+ 53
760
+ 54
761
+ 55
762
+ 56
763
+ 57
764
+ 58
765
+ 59
766
+ 60
767
+ 61
768
+ 62
769
+ 63
770
+ 64
771
+ 65
772
+ 66
773
+ 67
774
+ 68
775
+ 69
776
+ 70
777
+ 71
778
+ 72
779
+ 73
780
+ 74
781
+ 75
782
+ 76
783
+ 77
784
+ 78
785
+ 79
786
+ 80
787
+ 81
788
+ 82
789
+ 83
790
+ 84
791
+ 85
792
+ 86
793
+ 87
794
+ 88
795
+ 89
796
+ 90
797
+ 91
798
+ 92
799
+ 93
800
+ 94
801
+ 95
802
+ 96
803
+ 97
804
+ 98
805
+ 99
806
+ 100
807
+ 101
808
+ 102
809
+ 103
810
+ 104
811
+ 105
812
+ 106
813
+ 107
814
+ 108
815
+ 109
816
+ 110
817
+ 111
818
+ 112
819
+ 113
820
+ 114
821
+ 115
822
+ 116
823
+ 117
824
+ 118
825
+ 119
826
+ 120
827
+ 121
828
+ 122
829
+ 123
830
+ 124
831
+ 125
832
+ 126
833
+ 127
834
+ 128
835
+ 129
836
+ 130
837
+ 131
838
+ 132
839
+ 133
840
+ 134
841
+ 135
842
+ 136
843
+ 137
844
+ 138
845
+ 139
846
+ 140
847
+ 141
848
+ 142
849
+ 143
850
+ 144
851
+ 145
852
+ 146
853
+ 147
854
+ 148
855
+ 149
856
+ 150
857
+ 151
858
+ 152
859
+ 153
860
+ 154
861
+ 155
862
+ 156
863
+ 157
864
+ 158
865
+ 159
866
+ 160
867
+ 161
868
+ 162
869
+ 163
870
+ 164
871
+ 165
872
+ 166
873
+ 167
874
+ 168
875
+ 169
876
+ 170
877
+ 171
878
+ 172
879
+ 173
880
+ 174
881
+ 175
882
+ 176</pre>
883
+ </td>
884
+ <td>
885
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
886
+
887
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
888
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
889
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
890
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
891
+
892
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
893
+ </span> <span class='comment'># when receiving messages from a channel
894
+ </span> <span class='comment'>#
895
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
896
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
897
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
898
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
899
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
900
+ </span> <span class='comment'>#
901
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
902
+ </span> <span class='comment'>#
903
+ </span> <span class='comment'># @return [void]
904
+ </span> <span class='comment'>#
905
+ </span> <span class='comment'># @api public
906
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
907
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
908
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
909
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
910
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
911
+ <span class='kw'>end</span>
912
+
913
+ <span class='comment'># check the options list for values and sets default values if not found
914
+ </span> <span class='comment'>#
915
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
916
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
917
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
918
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
919
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
920
+ </span> <span class='comment'>#
921
+ </span> <span class='comment'># @return [void]
922
+ </span> <span class='comment'>#
923
+ </span> <span class='comment'># @api public
924
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
925
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
926
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
927
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
928
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
929
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
930
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
931
+ <span class='kw'>end</span>
932
+
933
+ <span class='comment'># checks if debug is enabled
934
+ </span> <span class='comment'>#
935
+ </span> <span class='comment'>#
936
+ </span> <span class='comment'># @return [boolean]
937
+ </span> <span class='comment'>#
938
+ </span> <span class='comment'># @api public
939
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
940
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
941
+ <span class='kw'>end</span>
942
+
943
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
944
+ </span> <span class='comment'>#
945
+ </span> <span class='comment'># @param [string] channel
946
+ </span> <span class='comment'>#
947
+ </span> <span class='comment'># @return [void]
948
+ </span> <span class='comment'>#
949
+ </span> <span class='comment'># @api public
950
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
951
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
952
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
953
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
954
+ <span class='kw'>end</span>
955
+
956
+ <span class='comment'># publishes to a channel some data (can be anything)
957
+ </span> <span class='comment'>#
958
+ </span> <span class='comment'># @param [string] channel
959
+ </span> <span class='comment'># @param [#to_s] data
960
+ </span> <span class='comment'>#
961
+ </span> <span class='comment'># @return [void]
962
+ </span> <span class='comment'>#
963
+ </span> <span class='comment'># @api public
964
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
965
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
966
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
967
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
968
+ <span class='kw'>end</span>
969
+
970
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
971
+ </span> <span class='comment'>#
972
+ </span> <span class='comment'># @return [void]
973
+ </span> <span class='comment'>#
974
+ </span> <span class='comment'># @api public
975
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
976
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
977
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
978
+ <span class='kw'>end</span>
979
+
980
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
981
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
982
+ </span> <span class='comment'># message to the original actor that made the connection
983
+ </span> <span class='comment'>#
984
+ </span> <span class='comment'># @param [JSON] data
985
+ </span> <span class='comment'>#
986
+ </span> <span class='comment'># @return [void]
987
+ </span> <span class='comment'>#
988
+ </span> <span class='comment'># @api public
989
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
990
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
991
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
992
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
993
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
994
+ <span class='kw'>end</span>
995
+
996
+ <span class='comment'># callback executes when connection closes
997
+ </span> <span class='comment'>#
998
+ </span> <span class='comment'># @param [String] code
999
+ </span> <span class='comment'>#
1000
+ </span> <span class='comment'># @param [String] reason
1001
+ </span> <span class='comment'>#
1002
+ </span> <span class='comment'># @return [void]
1003
+ </span> <span class='comment'>#
1004
+ </span> <span class='comment'># @api public
1005
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
1006
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
1007
+ <span class='id identifier rubyid_terminate'>terminate</span>
1008
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1009
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
1010
+ <span class='kw'>end</span>
1011
+
1012
+ <span class='id identifier rubyid_private'>private</span>
1013
+
1014
+ <span class='comment'># method used to send messages to the webserver
1015
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
1016
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
1017
+ </span> <span class='comment'>#
1018
+ </span> <span class='comment'># @param [Hash] message
1019
+ </span> <span class='comment'>#
1020
+ </span> <span class='comment'># @return [void]
1021
+ </span> <span class='comment'>#
1022
+ </span> <span class='comment'># @api private
1023
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1024
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
1025
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1026
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1027
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
1028
+ <span class='kw'>else</span>
1029
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1030
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1031
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
1032
+ <span class='kw'>end</span>
1033
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
1034
+ <span class='kw'>end</span>
1035
+ <span class='kw'>end</span></pre>
1036
+ </td>
1037
+ </tr>
1038
+ </table>
1039
+ </div>
1040
+
1041
+
1042
+ <span id="client=-instance_method"></span>
1043
+ <div class="method_details ">
1044
+ <h3 class="signature " id="client-instance_method">
1045
+
1046
+ - (<tt>Celluloid::WebSocket::Client</tt>) <strong>client</strong>
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+ </h3><div class="docstring">
1053
+ <div class="discussion">
1054
+
1055
+ <p>Returns A websocket client that is used to chat witht the webserver</p>
1056
+
1057
+
1058
+ </div>
1059
+ </div>
1060
+ <div class="tags">
1061
+
1062
+ <p class="tag_title">Returns:</p>
1063
+ <ul class="return">
1064
+
1065
+ <li>
1066
+
1067
+
1068
+ <span class='type'>(<tt>Celluloid::WebSocket::Client</tt>)</span>
1069
+
1070
+
1071
+
1072
+ &mdash;
1073
+ <div class='inline'>
1074
+ <p>A websocket client that is used to chat witht the webserver</p>
1075
+ </div>
1076
+
1077
+ </li>
1078
+
1079
+ </ul>
1080
+
1081
+ </div><table class="source_code">
1082
+ <tr>
1083
+ <td>
1084
+ <pre class="lines">
1085
+
1086
+
1087
+ 28
1088
+ 29
1089
+ 30
1090
+ 31
1091
+ 32
1092
+ 33
1093
+ 34
1094
+ 35
1095
+ 36
1096
+ 37
1097
+ 38
1098
+ 39
1099
+ 40
1100
+ 41
1101
+ 42
1102
+ 43
1103
+ 44
1104
+ 45
1105
+ 46
1106
+ 47
1107
+ 48
1108
+ 49
1109
+ 50
1110
+ 51
1111
+ 52
1112
+ 53
1113
+ 54
1114
+ 55
1115
+ 56
1116
+ 57
1117
+ 58
1118
+ 59
1119
+ 60
1120
+ 61
1121
+ 62
1122
+ 63
1123
+ 64
1124
+ 65
1125
+ 66
1126
+ 67
1127
+ 68
1128
+ 69
1129
+ 70
1130
+ 71
1131
+ 72
1132
+ 73
1133
+ 74
1134
+ 75
1135
+ 76
1136
+ 77
1137
+ 78
1138
+ 79
1139
+ 80
1140
+ 81
1141
+ 82
1142
+ 83
1143
+ 84
1144
+ 85
1145
+ 86
1146
+ 87
1147
+ 88
1148
+ 89
1149
+ 90
1150
+ 91
1151
+ 92
1152
+ 93
1153
+ 94
1154
+ 95
1155
+ 96
1156
+ 97
1157
+ 98
1158
+ 99
1159
+ 100
1160
+ 101
1161
+ 102
1162
+ 103
1163
+ 104
1164
+ 105
1165
+ 106
1166
+ 107
1167
+ 108
1168
+ 109
1169
+ 110
1170
+ 111
1171
+ 112
1172
+ 113
1173
+ 114
1174
+ 115
1175
+ 116
1176
+ 117
1177
+ 118
1178
+ 119
1179
+ 120
1180
+ 121
1181
+ 122
1182
+ 123
1183
+ 124
1184
+ 125
1185
+ 126
1186
+ 127
1187
+ 128
1188
+ 129
1189
+ 130
1190
+ 131
1191
+ 132
1192
+ 133
1193
+ 134
1194
+ 135
1195
+ 136
1196
+ 137
1197
+ 138
1198
+ 139
1199
+ 140
1200
+ 141
1201
+ 142
1202
+ 143
1203
+ 144
1204
+ 145
1205
+ 146
1206
+ 147
1207
+ 148
1208
+ 149
1209
+ 150
1210
+ 151
1211
+ 152
1212
+ 153
1213
+ 154
1214
+ 155
1215
+ 156
1216
+ 157
1217
+ 158
1218
+ 159
1219
+ 160
1220
+ 161
1221
+ 162
1222
+ 163
1223
+ 164
1224
+ 165
1225
+ 166
1226
+ 167
1227
+ 168
1228
+ 169
1229
+ 170
1230
+ 171
1231
+ 172
1232
+ 173
1233
+ 174
1234
+ 175
1235
+ 176</pre>
1236
+ </td>
1237
+ <td>
1238
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
1239
+
1240
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
1241
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
1242
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
1243
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
1244
+
1245
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
1246
+ </span> <span class='comment'># when receiving messages from a channel
1247
+ </span> <span class='comment'>#
1248
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
1249
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
1250
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
1251
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
1252
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
1253
+ </span> <span class='comment'>#
1254
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
1255
+ </span> <span class='comment'>#
1256
+ </span> <span class='comment'># @return [void]
1257
+ </span> <span class='comment'>#
1258
+ </span> <span class='comment'># @api public
1259
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
1260
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
1261
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
1262
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
1263
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
1264
+ <span class='kw'>end</span>
1265
+
1266
+ <span class='comment'># check the options list for values and sets default values if not found
1267
+ </span> <span class='comment'>#
1268
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
1269
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
1270
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
1271
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
1272
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
1273
+ </span> <span class='comment'>#
1274
+ </span> <span class='comment'># @return [void]
1275
+ </span> <span class='comment'>#
1276
+ </span> <span class='comment'># @api public
1277
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
1278
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1279
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
1280
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1281
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
1282
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
1283
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
1284
+ <span class='kw'>end</span>
1285
+
1286
+ <span class='comment'># checks if debug is enabled
1287
+ </span> <span class='comment'>#
1288
+ </span> <span class='comment'>#
1289
+ </span> <span class='comment'># @return [boolean]
1290
+ </span> <span class='comment'>#
1291
+ </span> <span class='comment'># @api public
1292
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1293
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1294
+ <span class='kw'>end</span>
1295
+
1296
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
1297
+ </span> <span class='comment'>#
1298
+ </span> <span class='comment'># @param [string] channel
1299
+ </span> <span class='comment'>#
1300
+ </span> <span class='comment'># @return [void]
1301
+ </span> <span class='comment'>#
1302
+ </span> <span class='comment'># @api public
1303
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
1304
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
1305
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1306
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
1307
+ <span class='kw'>end</span>
1308
+
1309
+ <span class='comment'># publishes to a channel some data (can be anything)
1310
+ </span> <span class='comment'>#
1311
+ </span> <span class='comment'># @param [string] channel
1312
+ </span> <span class='comment'># @param [#to_s] data
1313
+ </span> <span class='comment'>#
1314
+ </span> <span class='comment'># @return [void]
1315
+ </span> <span class='comment'>#
1316
+ </span> <span class='comment'># @api public
1317
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
1318
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
1319
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1320
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
1321
+ <span class='kw'>end</span>
1322
+
1323
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
1324
+ </span> <span class='comment'>#
1325
+ </span> <span class='comment'># @return [void]
1326
+ </span> <span class='comment'>#
1327
+ </span> <span class='comment'># @api public
1328
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
1329
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1330
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
1331
+ <span class='kw'>end</span>
1332
+
1333
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
1334
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
1335
+ </span> <span class='comment'># message to the original actor that made the connection
1336
+ </span> <span class='comment'>#
1337
+ </span> <span class='comment'># @param [JSON] data
1338
+ </span> <span class='comment'>#
1339
+ </span> <span class='comment'># @return [void]
1340
+ </span> <span class='comment'>#
1341
+ </span> <span class='comment'># @api public
1342
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
1343
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1344
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
1345
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1346
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1347
+ <span class='kw'>end</span>
1348
+
1349
+ <span class='comment'># callback executes when connection closes
1350
+ </span> <span class='comment'>#
1351
+ </span> <span class='comment'># @param [String] code
1352
+ </span> <span class='comment'>#
1353
+ </span> <span class='comment'># @param [String] reason
1354
+ </span> <span class='comment'>#
1355
+ </span> <span class='comment'># @return [void]
1356
+ </span> <span class='comment'>#
1357
+ </span> <span class='comment'># @api public
1358
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
1359
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
1360
+ <span class='id identifier rubyid_terminate'>terminate</span>
1361
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1362
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
1363
+ <span class='kw'>end</span>
1364
+
1365
+ <span class='id identifier rubyid_private'>private</span>
1366
+
1367
+ <span class='comment'># method used to send messages to the webserver
1368
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
1369
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
1370
+ </span> <span class='comment'>#
1371
+ </span> <span class='comment'># @param [Hash] message
1372
+ </span> <span class='comment'>#
1373
+ </span> <span class='comment'># @return [void]
1374
+ </span> <span class='comment'>#
1375
+ </span> <span class='comment'># @api private
1376
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1377
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
1378
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1379
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1380
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
1381
+ <span class='kw'>else</span>
1382
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1383
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1384
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
1385
+ <span class='kw'>end</span>
1386
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
1387
+ <span class='kw'>end</span>
1388
+ <span class='kw'>end</span></pre>
1389
+ </td>
1390
+ </tr>
1391
+ </table>
1392
+ </div>
1393
+
1394
+
1395
+ <span id="connect_blk=-instance_method"></span>
1396
+ <div class="method_details ">
1397
+ <h3 class="signature " id="connect_blk-instance_method">
1398
+
1399
+ - (<tt>Proc</tt>) <strong>connect_blk</strong>
1400
+
1401
+
1402
+
1403
+
1404
+
1405
+ </h3><div class="docstring">
1406
+ <div class="discussion">
1407
+
1408
+ <p>Returns Block that will execute after the connection is opened</p>
1409
+
1410
+
1411
+ </div>
1412
+ </div>
1413
+ <div class="tags">
1414
+
1415
+ <p class="tag_title">Returns:</p>
1416
+ <ul class="return">
1417
+
1418
+ <li>
1419
+
1420
+
1421
+ <span class='type'>(<tt>Proc</tt>)</span>
1422
+
1423
+
1424
+
1425
+ &mdash;
1426
+ <div class='inline'>
1427
+ <p>Block that will execute after the connection is opened</p>
1428
+ </div>
1429
+
1430
+ </li>
1431
+
1432
+ </ul>
1433
+
1434
+ </div><table class="source_code">
1435
+ <tr>
1436
+ <td>
1437
+ <pre class="lines">
1438
+
1439
+
1440
+ 28
1441
+ 29
1442
+ 30
1443
+ 31
1444
+ 32
1445
+ 33
1446
+ 34
1447
+ 35
1448
+ 36
1449
+ 37
1450
+ 38
1451
+ 39
1452
+ 40
1453
+ 41
1454
+ 42
1455
+ 43
1456
+ 44
1457
+ 45
1458
+ 46
1459
+ 47
1460
+ 48
1461
+ 49
1462
+ 50
1463
+ 51
1464
+ 52
1465
+ 53
1466
+ 54
1467
+ 55
1468
+ 56
1469
+ 57
1470
+ 58
1471
+ 59
1472
+ 60
1473
+ 61
1474
+ 62
1475
+ 63
1476
+ 64
1477
+ 65
1478
+ 66
1479
+ 67
1480
+ 68
1481
+ 69
1482
+ 70
1483
+ 71
1484
+ 72
1485
+ 73
1486
+ 74
1487
+ 75
1488
+ 76
1489
+ 77
1490
+ 78
1491
+ 79
1492
+ 80
1493
+ 81
1494
+ 82
1495
+ 83
1496
+ 84
1497
+ 85
1498
+ 86
1499
+ 87
1500
+ 88
1501
+ 89
1502
+ 90
1503
+ 91
1504
+ 92
1505
+ 93
1506
+ 94
1507
+ 95
1508
+ 96
1509
+ 97
1510
+ 98
1511
+ 99
1512
+ 100
1513
+ 101
1514
+ 102
1515
+ 103
1516
+ 104
1517
+ 105
1518
+ 106
1519
+ 107
1520
+ 108
1521
+ 109
1522
+ 110
1523
+ 111
1524
+ 112
1525
+ 113
1526
+ 114
1527
+ 115
1528
+ 116
1529
+ 117
1530
+ 118
1531
+ 119
1532
+ 120
1533
+ 121
1534
+ 122
1535
+ 123
1536
+ 124
1537
+ 125
1538
+ 126
1539
+ 127
1540
+ 128
1541
+ 129
1542
+ 130
1543
+ 131
1544
+ 132
1545
+ 133
1546
+ 134
1547
+ 135
1548
+ 136
1549
+ 137
1550
+ 138
1551
+ 139
1552
+ 140
1553
+ 141
1554
+ 142
1555
+ 143
1556
+ 144
1557
+ 145
1558
+ 146
1559
+ 147
1560
+ 148
1561
+ 149
1562
+ 150
1563
+ 151
1564
+ 152
1565
+ 153
1566
+ 154
1567
+ 155
1568
+ 156
1569
+ 157
1570
+ 158
1571
+ 159
1572
+ 160
1573
+ 161
1574
+ 162
1575
+ 163
1576
+ 164
1577
+ 165
1578
+ 166
1579
+ 167
1580
+ 168
1581
+ 169
1582
+ 170
1583
+ 171
1584
+ 172
1585
+ 173
1586
+ 174
1587
+ 175
1588
+ 176</pre>
1589
+ </td>
1590
+ <td>
1591
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
1592
+
1593
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
1594
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
1595
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
1596
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
1597
+
1598
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
1599
+ </span> <span class='comment'># when receiving messages from a channel
1600
+ </span> <span class='comment'>#
1601
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
1602
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
1603
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
1604
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
1605
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
1606
+ </span> <span class='comment'>#
1607
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
1608
+ </span> <span class='comment'>#
1609
+ </span> <span class='comment'># @return [void]
1610
+ </span> <span class='comment'>#
1611
+ </span> <span class='comment'># @api public
1612
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
1613
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
1614
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
1615
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
1616
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
1617
+ <span class='kw'>end</span>
1618
+
1619
+ <span class='comment'># check the options list for values and sets default values if not found
1620
+ </span> <span class='comment'>#
1621
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
1622
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
1623
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
1624
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
1625
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
1626
+ </span> <span class='comment'>#
1627
+ </span> <span class='comment'># @return [void]
1628
+ </span> <span class='comment'>#
1629
+ </span> <span class='comment'># @api public
1630
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
1631
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1632
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
1633
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1634
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
1635
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
1636
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
1637
+ <span class='kw'>end</span>
1638
+
1639
+ <span class='comment'># checks if debug is enabled
1640
+ </span> <span class='comment'>#
1641
+ </span> <span class='comment'>#
1642
+ </span> <span class='comment'># @return [boolean]
1643
+ </span> <span class='comment'>#
1644
+ </span> <span class='comment'># @api public
1645
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1646
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1647
+ <span class='kw'>end</span>
1648
+
1649
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
1650
+ </span> <span class='comment'>#
1651
+ </span> <span class='comment'># @param [string] channel
1652
+ </span> <span class='comment'>#
1653
+ </span> <span class='comment'># @return [void]
1654
+ </span> <span class='comment'>#
1655
+ </span> <span class='comment'># @api public
1656
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
1657
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
1658
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1659
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
1660
+ <span class='kw'>end</span>
1661
+
1662
+ <span class='comment'># publishes to a channel some data (can be anything)
1663
+ </span> <span class='comment'>#
1664
+ </span> <span class='comment'># @param [string] channel
1665
+ </span> <span class='comment'># @param [#to_s] data
1666
+ </span> <span class='comment'>#
1667
+ </span> <span class='comment'># @return [void]
1668
+ </span> <span class='comment'>#
1669
+ </span> <span class='comment'># @api public
1670
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
1671
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
1672
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1673
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
1674
+ <span class='kw'>end</span>
1675
+
1676
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
1677
+ </span> <span class='comment'>#
1678
+ </span> <span class='comment'># @return [void]
1679
+ </span> <span class='comment'>#
1680
+ </span> <span class='comment'># @api public
1681
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
1682
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1683
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
1684
+ <span class='kw'>end</span>
1685
+
1686
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
1687
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
1688
+ </span> <span class='comment'># message to the original actor that made the connection
1689
+ </span> <span class='comment'>#
1690
+ </span> <span class='comment'># @param [JSON] data
1691
+ </span> <span class='comment'>#
1692
+ </span> <span class='comment'># @return [void]
1693
+ </span> <span class='comment'>#
1694
+ </span> <span class='comment'># @api public
1695
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
1696
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1697
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
1698
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1699
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1700
+ <span class='kw'>end</span>
1701
+
1702
+ <span class='comment'># callback executes when connection closes
1703
+ </span> <span class='comment'>#
1704
+ </span> <span class='comment'># @param [String] code
1705
+ </span> <span class='comment'>#
1706
+ </span> <span class='comment'># @param [String] reason
1707
+ </span> <span class='comment'>#
1708
+ </span> <span class='comment'># @return [void]
1709
+ </span> <span class='comment'>#
1710
+ </span> <span class='comment'># @api public
1711
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
1712
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
1713
+ <span class='id identifier rubyid_terminate'>terminate</span>
1714
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1715
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
1716
+ <span class='kw'>end</span>
1717
+
1718
+ <span class='id identifier rubyid_private'>private</span>
1719
+
1720
+ <span class='comment'># method used to send messages to the webserver
1721
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
1722
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
1723
+ </span> <span class='comment'>#
1724
+ </span> <span class='comment'># @param [Hash] message
1725
+ </span> <span class='comment'>#
1726
+ </span> <span class='comment'># @return [void]
1727
+ </span> <span class='comment'>#
1728
+ </span> <span class='comment'># @api private
1729
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1730
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
1731
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1732
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1733
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
1734
+ <span class='kw'>else</span>
1735
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
1736
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1737
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
1738
+ <span class='kw'>end</span>
1739
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
1740
+ <span class='kw'>end</span>
1741
+ <span class='kw'>end</span></pre>
1742
+ </td>
1743
+ </tr>
1744
+ </table>
1745
+ </div>
1746
+
1747
+
1748
+ <span id="hostname=-instance_method"></span>
1749
+ <div class="method_details ">
1750
+ <h3 class="signature " id="hostname-instance_method">
1751
+
1752
+ - (<tt>String</tt>) <strong>hostname</strong>
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+ </h3><div class="docstring">
1759
+ <div class="discussion">
1760
+
1761
+ <p>Returns The hostname on which the webserver runs on</p>
1762
+
1763
+
1764
+ </div>
1765
+ </div>
1766
+ <div class="tags">
1767
+
1768
+ <p class="tag_title">Returns:</p>
1769
+ <ul class="return">
1770
+
1771
+ <li>
1772
+
1773
+
1774
+ <span class='type'>(<tt>String</tt>)</span>
1775
+
1776
+
1777
+
1778
+ &mdash;
1779
+ <div class='inline'>
1780
+ <p>The hostname on which the webserver runs on</p>
1781
+ </div>
1782
+
1783
+ </li>
1784
+
1785
+ </ul>
1786
+
1787
+ </div><table class="source_code">
1788
+ <tr>
1789
+ <td>
1790
+ <pre class="lines">
1791
+
1792
+
1793
+ 28
1794
+ 29
1795
+ 30
1796
+ 31
1797
+ 32
1798
+ 33
1799
+ 34
1800
+ 35
1801
+ 36
1802
+ 37
1803
+ 38
1804
+ 39
1805
+ 40
1806
+ 41
1807
+ 42
1808
+ 43
1809
+ 44
1810
+ 45
1811
+ 46
1812
+ 47
1813
+ 48
1814
+ 49
1815
+ 50
1816
+ 51
1817
+ 52
1818
+ 53
1819
+ 54
1820
+ 55
1821
+ 56
1822
+ 57
1823
+ 58
1824
+ 59
1825
+ 60
1826
+ 61
1827
+ 62
1828
+ 63
1829
+ 64
1830
+ 65
1831
+ 66
1832
+ 67
1833
+ 68
1834
+ 69
1835
+ 70
1836
+ 71
1837
+ 72
1838
+ 73
1839
+ 74
1840
+ 75
1841
+ 76
1842
+ 77
1843
+ 78
1844
+ 79
1845
+ 80
1846
+ 81
1847
+ 82
1848
+ 83
1849
+ 84
1850
+ 85
1851
+ 86
1852
+ 87
1853
+ 88
1854
+ 89
1855
+ 90
1856
+ 91
1857
+ 92
1858
+ 93
1859
+ 94
1860
+ 95
1861
+ 96
1862
+ 97
1863
+ 98
1864
+ 99
1865
+ 100
1866
+ 101
1867
+ 102
1868
+ 103
1869
+ 104
1870
+ 105
1871
+ 106
1872
+ 107
1873
+ 108
1874
+ 109
1875
+ 110
1876
+ 111
1877
+ 112
1878
+ 113
1879
+ 114
1880
+ 115
1881
+ 116
1882
+ 117
1883
+ 118
1884
+ 119
1885
+ 120
1886
+ 121
1887
+ 122
1888
+ 123
1889
+ 124
1890
+ 125
1891
+ 126
1892
+ 127
1893
+ 128
1894
+ 129
1895
+ 130
1896
+ 131
1897
+ 132
1898
+ 133
1899
+ 134
1900
+ 135
1901
+ 136
1902
+ 137
1903
+ 138
1904
+ 139
1905
+ 140
1906
+ 141
1907
+ 142
1908
+ 143
1909
+ 144
1910
+ 145
1911
+ 146
1912
+ 147
1913
+ 148
1914
+ 149
1915
+ 150
1916
+ 151
1917
+ 152
1918
+ 153
1919
+ 154
1920
+ 155
1921
+ 156
1922
+ 157
1923
+ 158
1924
+ 159
1925
+ 160
1926
+ 161
1927
+ 162
1928
+ 163
1929
+ 164
1930
+ 165
1931
+ 166
1932
+ 167
1933
+ 168
1934
+ 169
1935
+ 170
1936
+ 171
1937
+ 172
1938
+ 173
1939
+ 174
1940
+ 175
1941
+ 176</pre>
1942
+ </td>
1943
+ <td>
1944
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
1945
+
1946
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
1947
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
1948
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
1949
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
1950
+
1951
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
1952
+ </span> <span class='comment'># when receiving messages from a channel
1953
+ </span> <span class='comment'>#
1954
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
1955
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
1956
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
1957
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
1958
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
1959
+ </span> <span class='comment'>#
1960
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
1961
+ </span> <span class='comment'>#
1962
+ </span> <span class='comment'># @return [void]
1963
+ </span> <span class='comment'>#
1964
+ </span> <span class='comment'># @api public
1965
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
1966
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
1967
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
1968
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
1969
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
1970
+ <span class='kw'>end</span>
1971
+
1972
+ <span class='comment'># check the options list for values and sets default values if not found
1973
+ </span> <span class='comment'>#
1974
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
1975
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
1976
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
1977
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
1978
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
1979
+ </span> <span class='comment'>#
1980
+ </span> <span class='comment'># @return [void]
1981
+ </span> <span class='comment'>#
1982
+ </span> <span class='comment'># @api public
1983
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
1984
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1985
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
1986
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1987
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
1988
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
1989
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
1990
+ <span class='kw'>end</span>
1991
+
1992
+ <span class='comment'># checks if debug is enabled
1993
+ </span> <span class='comment'>#
1994
+ </span> <span class='comment'>#
1995
+ </span> <span class='comment'># @return [boolean]
1996
+ </span> <span class='comment'>#
1997
+ </span> <span class='comment'># @api public
1998
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
1999
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2000
+ <span class='kw'>end</span>
2001
+
2002
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
2003
+ </span> <span class='comment'>#
2004
+ </span> <span class='comment'># @param [string] channel
2005
+ </span> <span class='comment'>#
2006
+ </span> <span class='comment'># @return [void]
2007
+ </span> <span class='comment'>#
2008
+ </span> <span class='comment'># @api public
2009
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
2010
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
2011
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2012
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
2013
+ <span class='kw'>end</span>
2014
+
2015
+ <span class='comment'># publishes to a channel some data (can be anything)
2016
+ </span> <span class='comment'>#
2017
+ </span> <span class='comment'># @param [string] channel
2018
+ </span> <span class='comment'># @param [#to_s] data
2019
+ </span> <span class='comment'>#
2020
+ </span> <span class='comment'># @return [void]
2021
+ </span> <span class='comment'>#
2022
+ </span> <span class='comment'># @api public
2023
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2024
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
2025
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2026
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
2027
+ <span class='kw'>end</span>
2028
+
2029
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
2030
+ </span> <span class='comment'>#
2031
+ </span> <span class='comment'># @return [void]
2032
+ </span> <span class='comment'>#
2033
+ </span> <span class='comment'># @api public
2034
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
2035
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2036
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
2037
+ <span class='kw'>end</span>
2038
+
2039
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
2040
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
2041
+ </span> <span class='comment'># message to the original actor that made the connection
2042
+ </span> <span class='comment'>#
2043
+ </span> <span class='comment'># @param [JSON] data
2044
+ </span> <span class='comment'>#
2045
+ </span> <span class='comment'># @return [void]
2046
+ </span> <span class='comment'>#
2047
+ </span> <span class='comment'># @api public
2048
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2049
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2050
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2051
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2052
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2053
+ <span class='kw'>end</span>
2054
+
2055
+ <span class='comment'># callback executes when connection closes
2056
+ </span> <span class='comment'>#
2057
+ </span> <span class='comment'># @param [String] code
2058
+ </span> <span class='comment'>#
2059
+ </span> <span class='comment'># @param [String] reason
2060
+ </span> <span class='comment'>#
2061
+ </span> <span class='comment'># @return [void]
2062
+ </span> <span class='comment'>#
2063
+ </span> <span class='comment'># @api public
2064
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
2065
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
2066
+ <span class='id identifier rubyid_terminate'>terminate</span>
2067
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2068
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
2069
+ <span class='kw'>end</span>
2070
+
2071
+ <span class='id identifier rubyid_private'>private</span>
2072
+
2073
+ <span class='comment'># method used to send messages to the webserver
2074
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
2075
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
2076
+ </span> <span class='comment'>#
2077
+ </span> <span class='comment'># @param [Hash] message
2078
+ </span> <span class='comment'>#
2079
+ </span> <span class='comment'># @return [void]
2080
+ </span> <span class='comment'>#
2081
+ </span> <span class='comment'># @api private
2082
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2083
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
2084
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
2085
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2086
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
2087
+ <span class='kw'>else</span>
2088
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2089
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2090
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
2091
+ <span class='kw'>end</span>
2092
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
2093
+ <span class='kw'>end</span>
2094
+ <span class='kw'>end</span></pre>
2095
+ </td>
2096
+ </tr>
2097
+ </table>
2098
+ </div>
2099
+
2100
+
2101
+ <span id="options=-instance_method"></span>
2102
+ <div class="method_details ">
2103
+ <h3 class="signature " id="options-instance_method">
2104
+
2105
+ - (<tt>Hash</tt>) <strong>options</strong>
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+ </h3><div class="docstring">
2112
+ <div class="discussion">
2113
+
2114
+ <p>Returns the options that can be used to connect to webser and send
2115
+ additional data</p>
2116
+
2117
+
2118
+ </div>
2119
+ </div>
2120
+ <div class="tags">
2121
+
2122
+ <p class="tag_title">Returns:</p>
2123
+ <ul class="return">
2124
+
2125
+ <li>
2126
+
2127
+
2128
+ <span class='type'>(<tt>Hash</tt>)</span>
2129
+
2130
+
2131
+
2132
+ &mdash;
2133
+ <div class='inline'>
2134
+ <p>the options that can be used to connect to webser and send additional data</p>
2135
+ </div>
2136
+
2137
+ </li>
2138
+
2139
+ </ul>
2140
+
2141
+ </div><table class="source_code">
2142
+ <tr>
2143
+ <td>
2144
+ <pre class="lines">
2145
+
2146
+
2147
+ 28
2148
+ 29
2149
+ 30
2150
+ 31
2151
+ 32
2152
+ 33
2153
+ 34
2154
+ 35
2155
+ 36
2156
+ 37
2157
+ 38
2158
+ 39
2159
+ 40
2160
+ 41
2161
+ 42
2162
+ 43
2163
+ 44
2164
+ 45
2165
+ 46
2166
+ 47
2167
+ 48
2168
+ 49
2169
+ 50
2170
+ 51
2171
+ 52
2172
+ 53
2173
+ 54
2174
+ 55
2175
+ 56
2176
+ 57
2177
+ 58
2178
+ 59
2179
+ 60
2180
+ 61
2181
+ 62
2182
+ 63
2183
+ 64
2184
+ 65
2185
+ 66
2186
+ 67
2187
+ 68
2188
+ 69
2189
+ 70
2190
+ 71
2191
+ 72
2192
+ 73
2193
+ 74
2194
+ 75
2195
+ 76
2196
+ 77
2197
+ 78
2198
+ 79
2199
+ 80
2200
+ 81
2201
+ 82
2202
+ 83
2203
+ 84
2204
+ 85
2205
+ 86
2206
+ 87
2207
+ 88
2208
+ 89
2209
+ 90
2210
+ 91
2211
+ 92
2212
+ 93
2213
+ 94
2214
+ 95
2215
+ 96
2216
+ 97
2217
+ 98
2218
+ 99
2219
+ 100
2220
+ 101
2221
+ 102
2222
+ 103
2223
+ 104
2224
+ 105
2225
+ 106
2226
+ 107
2227
+ 108
2228
+ 109
2229
+ 110
2230
+ 111
2231
+ 112
2232
+ 113
2233
+ 114
2234
+ 115
2235
+ 116
2236
+ 117
2237
+ 118
2238
+ 119
2239
+ 120
2240
+ 121
2241
+ 122
2242
+ 123
2243
+ 124
2244
+ 125
2245
+ 126
2246
+ 127
2247
+ 128
2248
+ 129
2249
+ 130
2250
+ 131
2251
+ 132
2252
+ 133
2253
+ 134
2254
+ 135
2255
+ 136
2256
+ 137
2257
+ 138
2258
+ 139
2259
+ 140
2260
+ 141
2261
+ 142
2262
+ 143
2263
+ 144
2264
+ 145
2265
+ 146
2266
+ 147
2267
+ 148
2268
+ 149
2269
+ 150
2270
+ 151
2271
+ 152
2272
+ 153
2273
+ 154
2274
+ 155
2275
+ 156
2276
+ 157
2277
+ 158
2278
+ 159
2279
+ 160
2280
+ 161
2281
+ 162
2282
+ 163
2283
+ 164
2284
+ 165
2285
+ 166
2286
+ 167
2287
+ 168
2288
+ 169
2289
+ 170
2290
+ 171
2291
+ 172
2292
+ 173
2293
+ 174
2294
+ 175
2295
+ 176</pre>
2296
+ </td>
2297
+ <td>
2298
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
2299
+
2300
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
2301
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
2302
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
2303
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
2304
+
2305
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
2306
+ </span> <span class='comment'># when receiving messages from a channel
2307
+ </span> <span class='comment'>#
2308
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
2309
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
2310
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
2311
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
2312
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
2313
+ </span> <span class='comment'>#
2314
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
2315
+ </span> <span class='comment'>#
2316
+ </span> <span class='comment'># @return [void]
2317
+ </span> <span class='comment'>#
2318
+ </span> <span class='comment'># @api public
2319
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
2320
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
2321
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
2322
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
2323
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
2324
+ <span class='kw'>end</span>
2325
+
2326
+ <span class='comment'># check the options list for values and sets default values if not found
2327
+ </span> <span class='comment'>#
2328
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
2329
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
2330
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
2331
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
2332
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
2333
+ </span> <span class='comment'>#
2334
+ </span> <span class='comment'># @return [void]
2335
+ </span> <span class='comment'>#
2336
+ </span> <span class='comment'># @api public
2337
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
2338
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
2339
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
2340
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
2341
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
2342
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
2343
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
2344
+ <span class='kw'>end</span>
2345
+
2346
+ <span class='comment'># checks if debug is enabled
2347
+ </span> <span class='comment'>#
2348
+ </span> <span class='comment'>#
2349
+ </span> <span class='comment'># @return [boolean]
2350
+ </span> <span class='comment'>#
2351
+ </span> <span class='comment'># @api public
2352
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2353
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2354
+ <span class='kw'>end</span>
2355
+
2356
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
2357
+ </span> <span class='comment'>#
2358
+ </span> <span class='comment'># @param [string] channel
2359
+ </span> <span class='comment'>#
2360
+ </span> <span class='comment'># @return [void]
2361
+ </span> <span class='comment'>#
2362
+ </span> <span class='comment'># @api public
2363
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
2364
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
2365
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2366
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
2367
+ <span class='kw'>end</span>
2368
+
2369
+ <span class='comment'># publishes to a channel some data (can be anything)
2370
+ </span> <span class='comment'>#
2371
+ </span> <span class='comment'># @param [string] channel
2372
+ </span> <span class='comment'># @param [#to_s] data
2373
+ </span> <span class='comment'>#
2374
+ </span> <span class='comment'># @return [void]
2375
+ </span> <span class='comment'>#
2376
+ </span> <span class='comment'># @api public
2377
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2378
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
2379
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2380
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
2381
+ <span class='kw'>end</span>
2382
+
2383
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
2384
+ </span> <span class='comment'>#
2385
+ </span> <span class='comment'># @return [void]
2386
+ </span> <span class='comment'>#
2387
+ </span> <span class='comment'># @api public
2388
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
2389
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2390
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
2391
+ <span class='kw'>end</span>
2392
+
2393
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
2394
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
2395
+ </span> <span class='comment'># message to the original actor that made the connection
2396
+ </span> <span class='comment'>#
2397
+ </span> <span class='comment'># @param [JSON] data
2398
+ </span> <span class='comment'>#
2399
+ </span> <span class='comment'># @return [void]
2400
+ </span> <span class='comment'>#
2401
+ </span> <span class='comment'># @api public
2402
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2403
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2404
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2405
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2406
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2407
+ <span class='kw'>end</span>
2408
+
2409
+ <span class='comment'># callback executes when connection closes
2410
+ </span> <span class='comment'>#
2411
+ </span> <span class='comment'># @param [String] code
2412
+ </span> <span class='comment'>#
2413
+ </span> <span class='comment'># @param [String] reason
2414
+ </span> <span class='comment'>#
2415
+ </span> <span class='comment'># @return [void]
2416
+ </span> <span class='comment'>#
2417
+ </span> <span class='comment'># @api public
2418
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
2419
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
2420
+ <span class='id identifier rubyid_terminate'>terminate</span>
2421
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2422
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
2423
+ <span class='kw'>end</span>
2424
+
2425
+ <span class='id identifier rubyid_private'>private</span>
2426
+
2427
+ <span class='comment'># method used to send messages to the webserver
2428
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
2429
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
2430
+ </span> <span class='comment'>#
2431
+ </span> <span class='comment'># @param [Hash] message
2432
+ </span> <span class='comment'>#
2433
+ </span> <span class='comment'># @return [void]
2434
+ </span> <span class='comment'>#
2435
+ </span> <span class='comment'># @api private
2436
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2437
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
2438
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
2439
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2440
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
2441
+ <span class='kw'>else</span>
2442
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2443
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2444
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
2445
+ <span class='kw'>end</span>
2446
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
2447
+ <span class='kw'>end</span>
2448
+ <span class='kw'>end</span></pre>
2449
+ </td>
2450
+ </tr>
2451
+ </table>
2452
+ </div>
2453
+
2454
+
2455
+ <span id="path=-instance_method"></span>
2456
+ <div class="method_details ">
2457
+ <h3 class="signature " id="path-instance_method">
2458
+
2459
+ - (<tt>String</tt>) <strong>path</strong>
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+ </h3><div class="docstring">
2466
+ <div class="discussion">
2467
+
2468
+ <p>Returns The hostname on which the webserver runs on</p>
2469
+
2470
+
2471
+ </div>
2472
+ </div>
2473
+ <div class="tags">
2474
+
2475
+ <p class="tag_title">Returns:</p>
2476
+ <ul class="return">
2477
+
2478
+ <li>
2479
+
2480
+
2481
+ <span class='type'>(<tt>String</tt>)</span>
2482
+
2483
+
2484
+
2485
+ &mdash;
2486
+ <div class='inline'>
2487
+ <p>The hostname on which the webserver runs on</p>
2488
+ </div>
2489
+
2490
+ </li>
2491
+
2492
+ </ul>
2493
+
2494
+ </div><table class="source_code">
2495
+ <tr>
2496
+ <td>
2497
+ <pre class="lines">
2498
+
2499
+
2500
+ 28
2501
+ 29
2502
+ 30
2503
+ 31
2504
+ 32
2505
+ 33
2506
+ 34
2507
+ 35
2508
+ 36
2509
+ 37
2510
+ 38
2511
+ 39
2512
+ 40
2513
+ 41
2514
+ 42
2515
+ 43
2516
+ 44
2517
+ 45
2518
+ 46
2519
+ 47
2520
+ 48
2521
+ 49
2522
+ 50
2523
+ 51
2524
+ 52
2525
+ 53
2526
+ 54
2527
+ 55
2528
+ 56
2529
+ 57
2530
+ 58
2531
+ 59
2532
+ 60
2533
+ 61
2534
+ 62
2535
+ 63
2536
+ 64
2537
+ 65
2538
+ 66
2539
+ 67
2540
+ 68
2541
+ 69
2542
+ 70
2543
+ 71
2544
+ 72
2545
+ 73
2546
+ 74
2547
+ 75
2548
+ 76
2549
+ 77
2550
+ 78
2551
+ 79
2552
+ 80
2553
+ 81
2554
+ 82
2555
+ 83
2556
+ 84
2557
+ 85
2558
+ 86
2559
+ 87
2560
+ 88
2561
+ 89
2562
+ 90
2563
+ 91
2564
+ 92
2565
+ 93
2566
+ 94
2567
+ 95
2568
+ 96
2569
+ 97
2570
+ 98
2571
+ 99
2572
+ 100
2573
+ 101
2574
+ 102
2575
+ 103
2576
+ 104
2577
+ 105
2578
+ 106
2579
+ 107
2580
+ 108
2581
+ 109
2582
+ 110
2583
+ 111
2584
+ 112
2585
+ 113
2586
+ 114
2587
+ 115
2588
+ 116
2589
+ 117
2590
+ 118
2591
+ 119
2592
+ 120
2593
+ 121
2594
+ 122
2595
+ 123
2596
+ 124
2597
+ 125
2598
+ 126
2599
+ 127
2600
+ 128
2601
+ 129
2602
+ 130
2603
+ 131
2604
+ 132
2605
+ 133
2606
+ 134
2607
+ 135
2608
+ 136
2609
+ 137
2610
+ 138
2611
+ 139
2612
+ 140
2613
+ 141
2614
+ 142
2615
+ 143
2616
+ 144
2617
+ 145
2618
+ 146
2619
+ 147
2620
+ 148
2621
+ 149
2622
+ 150
2623
+ 151
2624
+ 152
2625
+ 153
2626
+ 154
2627
+ 155
2628
+ 156
2629
+ 157
2630
+ 158
2631
+ 159
2632
+ 160
2633
+ 161
2634
+ 162
2635
+ 163
2636
+ 164
2637
+ 165
2638
+ 166
2639
+ 167
2640
+ 168
2641
+ 169
2642
+ 170
2643
+ 171
2644
+ 172
2645
+ 173
2646
+ 174
2647
+ 175
2648
+ 176</pre>
2649
+ </td>
2650
+ <td>
2651
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
2652
+
2653
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
2654
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
2655
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
2656
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
2657
+
2658
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
2659
+ </span> <span class='comment'># when receiving messages from a channel
2660
+ </span> <span class='comment'>#
2661
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
2662
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
2663
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
2664
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
2665
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
2666
+ </span> <span class='comment'>#
2667
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
2668
+ </span> <span class='comment'>#
2669
+ </span> <span class='comment'># @return [void]
2670
+ </span> <span class='comment'>#
2671
+ </span> <span class='comment'># @api public
2672
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
2673
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
2674
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
2675
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
2676
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
2677
+ <span class='kw'>end</span>
2678
+
2679
+ <span class='comment'># check the options list for values and sets default values if not found
2680
+ </span> <span class='comment'>#
2681
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
2682
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
2683
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
2684
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
2685
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
2686
+ </span> <span class='comment'>#
2687
+ </span> <span class='comment'># @return [void]
2688
+ </span> <span class='comment'>#
2689
+ </span> <span class='comment'># @api public
2690
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
2691
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
2692
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
2693
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
2694
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
2695
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
2696
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
2697
+ <span class='kw'>end</span>
2698
+
2699
+ <span class='comment'># checks if debug is enabled
2700
+ </span> <span class='comment'>#
2701
+ </span> <span class='comment'>#
2702
+ </span> <span class='comment'># @return [boolean]
2703
+ </span> <span class='comment'>#
2704
+ </span> <span class='comment'># @api public
2705
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2706
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2707
+ <span class='kw'>end</span>
2708
+
2709
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
2710
+ </span> <span class='comment'>#
2711
+ </span> <span class='comment'># @param [string] channel
2712
+ </span> <span class='comment'>#
2713
+ </span> <span class='comment'># @return [void]
2714
+ </span> <span class='comment'>#
2715
+ </span> <span class='comment'># @api public
2716
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
2717
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
2718
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2719
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
2720
+ <span class='kw'>end</span>
2721
+
2722
+ <span class='comment'># publishes to a channel some data (can be anything)
2723
+ </span> <span class='comment'>#
2724
+ </span> <span class='comment'># @param [string] channel
2725
+ </span> <span class='comment'># @param [#to_s] data
2726
+ </span> <span class='comment'>#
2727
+ </span> <span class='comment'># @return [void]
2728
+ </span> <span class='comment'>#
2729
+ </span> <span class='comment'># @api public
2730
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2731
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
2732
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2733
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
2734
+ <span class='kw'>end</span>
2735
+
2736
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
2737
+ </span> <span class='comment'>#
2738
+ </span> <span class='comment'># @return [void]
2739
+ </span> <span class='comment'>#
2740
+ </span> <span class='comment'># @api public
2741
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
2742
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2743
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
2744
+ <span class='kw'>end</span>
2745
+
2746
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
2747
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
2748
+ </span> <span class='comment'># message to the original actor that made the connection
2749
+ </span> <span class='comment'>#
2750
+ </span> <span class='comment'># @param [JSON] data
2751
+ </span> <span class='comment'>#
2752
+ </span> <span class='comment'># @return [void]
2753
+ </span> <span class='comment'>#
2754
+ </span> <span class='comment'># @api public
2755
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2756
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2757
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
2758
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2759
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2760
+ <span class='kw'>end</span>
2761
+
2762
+ <span class='comment'># callback executes when connection closes
2763
+ </span> <span class='comment'>#
2764
+ </span> <span class='comment'># @param [String] code
2765
+ </span> <span class='comment'>#
2766
+ </span> <span class='comment'># @param [String] reason
2767
+ </span> <span class='comment'>#
2768
+ </span> <span class='comment'># @return [void]
2769
+ </span> <span class='comment'>#
2770
+ </span> <span class='comment'># @api public
2771
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
2772
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
2773
+ <span class='id identifier rubyid_terminate'>terminate</span>
2774
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2775
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
2776
+ <span class='kw'>end</span>
2777
+
2778
+ <span class='id identifier rubyid_private'>private</span>
2779
+
2780
+ <span class='comment'># method used to send messages to the webserver
2781
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
2782
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
2783
+ </span> <span class='comment'>#
2784
+ </span> <span class='comment'># @param [Hash] message
2785
+ </span> <span class='comment'>#
2786
+ </span> <span class='comment'># @return [void]
2787
+ </span> <span class='comment'>#
2788
+ </span> <span class='comment'># @api private
2789
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2790
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
2791
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
2792
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2793
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
2794
+ <span class='kw'>else</span>
2795
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
2796
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
2797
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
2798
+ <span class='kw'>end</span>
2799
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
2800
+ <span class='kw'>end</span>
2801
+ <span class='kw'>end</span></pre>
2802
+ </td>
2803
+ </tr>
2804
+ </table>
2805
+ </div>
2806
+
2807
+
2808
+ <span id="port=-instance_method"></span>
2809
+ <div class="method_details ">
2810
+ <h3 class="signature " id="port-instance_method">
2811
+
2812
+ - (<tt>String</tt>) <strong>port</strong>
2813
+
2814
+
2815
+
2816
+
2817
+
2818
+ </h3><div class="docstring">
2819
+ <div class="discussion">
2820
+
2821
+ <p>Returns The port on which the webserver runs on</p>
2822
+
2823
+
2824
+ </div>
2825
+ </div>
2826
+ <div class="tags">
2827
+
2828
+ <p class="tag_title">Returns:</p>
2829
+ <ul class="return">
2830
+
2831
+ <li>
2832
+
2833
+
2834
+ <span class='type'>(<tt>String</tt>)</span>
2835
+
2836
+
2837
+
2838
+ &mdash;
2839
+ <div class='inline'>
2840
+ <p>The port on which the webserver runs on</p>
2841
+ </div>
2842
+
2843
+ </li>
2844
+
2845
+ </ul>
2846
+
2847
+ </div><table class="source_code">
2848
+ <tr>
2849
+ <td>
2850
+ <pre class="lines">
2851
+
2852
+
2853
+ 28
2854
+ 29
2855
+ 30
2856
+ 31
2857
+ 32
2858
+ 33
2859
+ 34
2860
+ 35
2861
+ 36
2862
+ 37
2863
+ 38
2864
+ 39
2865
+ 40
2866
+ 41
2867
+ 42
2868
+ 43
2869
+ 44
2870
+ 45
2871
+ 46
2872
+ 47
2873
+ 48
2874
+ 49
2875
+ 50
2876
+ 51
2877
+ 52
2878
+ 53
2879
+ 54
2880
+ 55
2881
+ 56
2882
+ 57
2883
+ 58
2884
+ 59
2885
+ 60
2886
+ 61
2887
+ 62
2888
+ 63
2889
+ 64
2890
+ 65
2891
+ 66
2892
+ 67
2893
+ 68
2894
+ 69
2895
+ 70
2896
+ 71
2897
+ 72
2898
+ 73
2899
+ 74
2900
+ 75
2901
+ 76
2902
+ 77
2903
+ 78
2904
+ 79
2905
+ 80
2906
+ 81
2907
+ 82
2908
+ 83
2909
+ 84
2910
+ 85
2911
+ 86
2912
+ 87
2913
+ 88
2914
+ 89
2915
+ 90
2916
+ 91
2917
+ 92
2918
+ 93
2919
+ 94
2920
+ 95
2921
+ 96
2922
+ 97
2923
+ 98
2924
+ 99
2925
+ 100
2926
+ 101
2927
+ 102
2928
+ 103
2929
+ 104
2930
+ 105
2931
+ 106
2932
+ 107
2933
+ 108
2934
+ 109
2935
+ 110
2936
+ 111
2937
+ 112
2938
+ 113
2939
+ 114
2940
+ 115
2941
+ 116
2942
+ 117
2943
+ 118
2944
+ 119
2945
+ 120
2946
+ 121
2947
+ 122
2948
+ 123
2949
+ 124
2950
+ 125
2951
+ 126
2952
+ 127
2953
+ 128
2954
+ 129
2955
+ 130
2956
+ 131
2957
+ 132
2958
+ 133
2959
+ 134
2960
+ 135
2961
+ 136
2962
+ 137
2963
+ 138
2964
+ 139
2965
+ 140
2966
+ 141
2967
+ 142
2968
+ 143
2969
+ 144
2970
+ 145
2971
+ 146
2972
+ 147
2973
+ 148
2974
+ 149
2975
+ 150
2976
+ 151
2977
+ 152
2978
+ 153
2979
+ 154
2980
+ 155
2981
+ 156
2982
+ 157
2983
+ 158
2984
+ 159
2985
+ 160
2986
+ 161
2987
+ 162
2988
+ 163
2989
+ 164
2990
+ 165
2991
+ 166
2992
+ 167
2993
+ 168
2994
+ 169
2995
+ 170
2996
+ 171
2997
+ 172
2998
+ 173
2999
+ 174
3000
+ 175
3001
+ 176</pre>
3002
+ </td>
3003
+ <td>
3004
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 28</span>
3005
+
3006
+ <span class='kw'>class</span> <span class='const'>PubSubWorker</span>
3007
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span>
3008
+ <span class='id identifier rubyid_include'>include</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>Logger</span>
3009
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:actor</span><span class='comma'>,</span> <span class='symbol'>:connect_blk</span><span class='comma'>,</span> <span class='symbol'>:client</span><span class='comma'>,</span> <span class='symbol'>:options</span><span class='comma'>,</span> <span class='symbol'>:hostname</span><span class='comma'>,</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='symbol'>:path</span>
3010
+
3011
+ <span class='comment'># receives a list of options that are used to connect to the webserver and an actor to which the callbacks are delegated to
3012
+ </span> <span class='comment'># when receiving messages from a channel
3013
+ </span> <span class='comment'>#
3014
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
3015
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
3016
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
3017
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
3018
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
3019
+ </span> <span class='comment'>#
3020
+ </span> <span class='comment'># @param [Proc] connect_blk Block that will execute after the connection is opened
3021
+ </span> <span class='comment'>#
3022
+ </span> <span class='comment'># @return [void]
3023
+ </span> <span class='comment'>#
3024
+ </span> <span class='comment'># @api public
3025
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_connect_blk'>connect_blk</span><span class='rparen'>)</span>
3026
+ <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
3027
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Please provide an actor in the options list!!!</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
3028
+ <span class='ivar'>@connect_blk</span> <span class='op'>=</span> <span class='id identifier rubyid_connect_blk'>connect_blk</span>
3029
+ <span class='ivar'>@client</span> <span class='op'>=</span> <span class='const'>Celluloid</span><span class='op'>::</span><span class='const'>WebSocket</span><span class='op'>::</span><span class='const'>Client</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ws://</span><span class='embexpr_beg'>#{</span><span class='ivar'>@hostname</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@port</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='ivar'>@path</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span><span class='rparen'>)</span>
3030
+ <span class='kw'>end</span>
3031
+
3032
+ <span class='comment'># check the options list for values and sets default values if not found
3033
+ </span> <span class='comment'>#
3034
+ </span> <span class='comment'># @param [Hash] options the options that can be used to connect to webser and send additional data
3035
+ </span> <span class='comment'># @option options [String] :actor The actor that made the connection
3036
+ </span> <span class='comment'># @option options [String]:hostname The hostname on which the webserver runs on
3037
+ </span> <span class='comment'># @option options [String] :port The port on which the webserver runs on
3038
+ </span> <span class='comment'># @option options [String] :path The request path that the webserver accepts
3039
+ </span> <span class='comment'>#
3040
+ </span> <span class='comment'># @return [void]
3041
+ </span> <span class='comment'>#
3042
+ </span> <span class='comment'># @api public
3043
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
3044
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
3045
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
3046
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
3047
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
3048
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
3049
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
3050
+ <span class='kw'>end</span>
3051
+
3052
+ <span class='comment'># checks if debug is enabled
3053
+ </span> <span class='comment'>#
3054
+ </span> <span class='comment'>#
3055
+ </span> <span class='comment'># @return [boolean]
3056
+ </span> <span class='comment'>#
3057
+ </span> <span class='comment'># @api public
3058
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3059
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3060
+ <span class='kw'>end</span>
3061
+
3062
+ <span class='comment'># subscribes to a channel . need to be used inside the connect block passed to the actor
3063
+ </span> <span class='comment'>#
3064
+ </span> <span class='comment'># @param [string] channel
3065
+ </span> <span class='comment'>#
3066
+ </span> <span class='comment'># @return [void]
3067
+ </span> <span class='comment'>#
3068
+ </span> <span class='comment'># @api public
3069
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
3070
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
3071
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3072
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
3073
+ <span class='kw'>end</span>
3074
+
3075
+ <span class='comment'># publishes to a channel some data (can be anything)
3076
+ </span> <span class='comment'>#
3077
+ </span> <span class='comment'># @param [string] channel
3078
+ </span> <span class='comment'># @param [#to_s] data
3079
+ </span> <span class='comment'>#
3080
+ </span> <span class='comment'># @return [void]
3081
+ </span> <span class='comment'>#
3082
+ </span> <span class='comment'># @api public
3083
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
3084
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
3085
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3086
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
3087
+ <span class='kw'>end</span>
3088
+
3089
+ <span class='comment'># callback executes after connection is opened and delegates action to actor
3090
+ </span> <span class='comment'>#
3091
+ </span> <span class='comment'># @return [void]
3092
+ </span> <span class='comment'>#
3093
+ </span> <span class='comment'># @api public
3094
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
3095
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3096
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
3097
+ <span class='kw'>end</span>
3098
+
3099
+ <span class='comment'># callback executes when actor receives a message from a subscribed channel
3100
+ </span> <span class='comment'># and parses the message using JSON.parse and dispatches the parsed
3101
+ </span> <span class='comment'># message to the original actor that made the connection
3102
+ </span> <span class='comment'>#
3103
+ </span> <span class='comment'># @param [JSON] data
3104
+ </span> <span class='comment'>#
3105
+ </span> <span class='comment'># @return [void]
3106
+ </span> <span class='comment'>#
3107
+ </span> <span class='comment'># @api public
3108
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
3109
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3110
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
3111
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3112
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
3113
+ <span class='kw'>end</span>
3114
+
3115
+ <span class='comment'># callback executes when connection closes
3116
+ </span> <span class='comment'>#
3117
+ </span> <span class='comment'># @param [String] code
3118
+ </span> <span class='comment'>#
3119
+ </span> <span class='comment'># @param [String] reason
3120
+ </span> <span class='comment'>#
3121
+ </span> <span class='comment'># @return [void]
3122
+ </span> <span class='comment'>#
3123
+ </span> <span class='comment'># @api public
3124
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
3125
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
3126
+ <span class='id identifier rubyid_terminate'>terminate</span>
3127
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3128
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
3129
+ <span class='kw'>end</span>
3130
+
3131
+ <span class='id identifier rubyid_private'>private</span>
3132
+
3133
+ <span class='comment'># method used to send messages to the webserver
3134
+ </span> <span class='comment'># checks too see if the message is a hash and if it is it will transform it to JSON and send it to the webser
3135
+ </span> <span class='comment'># otherwise will construct a JSON object that will have the key action with the value &#39;message&quot; and the key message witth the parameter&#39;s value
3136
+ </span> <span class='comment'>#
3137
+ </span> <span class='comment'># @param [Hash] message
3138
+ </span> <span class='comment'>#
3139
+ </span> <span class='comment'># @return [void]
3140
+ </span> <span class='comment'>#
3141
+ </span> <span class='comment'># @api private
3142
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
3143
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='kw'>nil</span>
3144
+ <span class='kw'>if</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
3145
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3146
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_message'>message</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
3147
+ <span class='kw'>else</span>
3148
+ <span class='id identifier rubyid_text_messsage'>text_messsage</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>message</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>message:</span> <span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
3149
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> sends JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_text_messsage'>text_messsage</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3150
+ <span class='id identifier rubyid_final_message'>final_message</span> <span class='op'>=</span> <span class='id identifier rubyid_text_messsage'>text_messsage</span>
3151
+ <span class='kw'>end</span>
3152
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_text'>text</span> <span class='id identifier rubyid_final_message'>final_message</span>
3153
+ <span class='kw'>end</span>
3154
+ <span class='kw'>end</span></pre>
3155
+ </td>
3156
+ </tr>
3157
+ </table>
3158
+ </div>
3159
+
3160
+ </div>
3161
+
3162
+
3163
+ <div id="instance_method_details" class="method_details_list">
3164
+ <h2>Instance Method Details</h2>
3165
+
3166
+
3167
+ <div class="method_details first">
3168
+ <h3 class="signature first" id="debug_enabled?-instance_method">
3169
+
3170
+ - (<tt>boolean</tt>) <strong>debug_enabled?</strong>
3171
+
3172
+
3173
+
3174
+
3175
+
3176
+ </h3><div class="docstring">
3177
+ <div class="discussion">
3178
+
3179
+ <p>checks if debug is enabled</p>
3180
+
3181
+
3182
+ </div>
3183
+ </div>
3184
+ <div class="tags">
3185
+
3186
+ <p class="tag_title">Returns:</p>
3187
+ <ul class="return">
3188
+
3189
+ <li>
3190
+
3191
+
3192
+ <span class='type'>(<tt>boolean</tt>)</span>
3193
+
3194
+
3195
+
3196
+ </li>
3197
+
3198
+ </ul>
3199
+
3200
+ </div><table class="source_code">
3201
+ <tr>
3202
+ <td>
3203
+ <pre class="lines">
3204
+
3205
+
3206
+ 80
3207
+ 81
3208
+ 82</pre>
3209
+ </td>
3210
+ <td>
3211
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 80</span>
3212
+
3213
+ <span class='kw'>def</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3214
+ <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='period'>.</span><span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3215
+ <span class='kw'>end</span></pre>
3216
+ </td>
3217
+ </tr>
3218
+ </table>
3219
+ </div>
3220
+
3221
+ <div class="method_details ">
3222
+ <h3 class="signature " id="on_close-instance_method">
3223
+
3224
+ - (<tt>void</tt>) <strong>on_close</strong>(code, reason)
3225
+
3226
+
3227
+
3228
+
3229
+
3230
+ </h3><div class="docstring">
3231
+ <div class="discussion">
3232
+ <p class="note returns_void">This method returns an undefined value.</p>
3233
+ <p>callback executes when connection closes</p>
3234
+
3235
+
3236
+ </div>
3237
+ </div>
3238
+ <div class="tags">
3239
+ <p class="tag_title">Parameters:</p>
3240
+ <ul class="param">
3241
+
3242
+ <li>
3243
+
3244
+ <span class='name'>code</span>
3245
+
3246
+
3247
+ <span class='type'>(<tt>String</tt>)</span>
3248
+
3249
+
3250
+
3251
+ </li>
3252
+
3253
+ <li>
3254
+
3255
+ <span class='name'>reason</span>
3256
+
3257
+
3258
+ <span class='type'>(<tt>String</tt>)</span>
3259
+
3260
+
3261
+
3262
+ </li>
3263
+
3264
+ </ul>
3265
+
3266
+
3267
+ </div><table class="source_code">
3268
+ <tr>
3269
+ <td>
3270
+ <pre class="lines">
3271
+
3272
+
3273
+ 146
3274
+ 147
3275
+ 148
3276
+ 149
3277
+ 150
3278
+ 151</pre>
3279
+ </td>
3280
+ <td>
3281
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 146</span>
3282
+
3283
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
3284
+ <span class='ivar'>@client</span><span class='period'>.</span><span class='id identifier rubyid_terminate'>terminate</span>
3285
+ <span class='id identifier rubyid_terminate'>terminate</span>
3286
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> dispatching on close </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_reason'>reason</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3287
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_close'>on_close</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
3288
+ <span class='kw'>end</span></pre>
3289
+ </td>
3290
+ </tr>
3291
+ </table>
3292
+ </div>
3293
+
3294
+ <div class="method_details ">
3295
+ <h3 class="signature " id="on_message-instance_method">
3296
+
3297
+ - (<tt>void</tt>) <strong>on_message</strong>(data)
3298
+
3299
+
3300
+
3301
+
3302
+
3303
+ </h3><div class="docstring">
3304
+ <div class="discussion">
3305
+ <p class="note returns_void">This method returns an undefined value.</p>
3306
+ <p>callback executes when actor receives a message from a subscribed channel
3307
+ and parses the message using JSON.parse and dispatches the parsed message
3308
+ to the original actor that made the connection</p>
3309
+
3310
+
3311
+ </div>
3312
+ </div>
3313
+ <div class="tags">
3314
+ <p class="tag_title">Parameters:</p>
3315
+ <ul class="param">
3316
+
3317
+ <li>
3318
+
3319
+ <span class='name'>data</span>
3320
+
3321
+
3322
+ <span class='type'>(<tt>JSON</tt>)</span>
3323
+
3324
+
3325
+
3326
+ </li>
3327
+
3328
+ </ul>
3329
+
3330
+
3331
+ </div><table class="source_code">
3332
+ <tr>
3333
+ <td>
3334
+ <pre class="lines">
3335
+
3336
+
3337
+ 130
3338
+ 131
3339
+ 132
3340
+ 133
3341
+ 134
3342
+ 135</pre>
3343
+ </td>
3344
+ <td>
3345
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 130</span>
3346
+
3347
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
3348
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received plain </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_data'>data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3349
+ <span class='id identifier rubyid_message'>message</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
3350
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> received JSON </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3351
+ <span class='ivar'>@actor</span><span class='period'>.</span><span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='rparen'>)</span>
3352
+ <span class='kw'>end</span></pre>
3353
+ </td>
3354
+ </tr>
3355
+ </table>
3356
+ </div>
3357
+
3358
+ <div class="method_details ">
3359
+ <h3 class="signature " id="on_open-instance_method">
3360
+
3361
+ - (<tt>void</tt>) <strong>on_open</strong>
3362
+
3363
+
3364
+
3365
+
3366
+
3367
+ </h3><div class="docstring">
3368
+ <div class="discussion">
3369
+ <p class="note returns_void">This method returns an undefined value.</p>
3370
+ <p>callback executes after connection is opened and delegates action to actor</p>
3371
+
3372
+
3373
+ </div>
3374
+ </div>
3375
+ <div class="tags">
3376
+
3377
+
3378
+ </div><table class="source_code">
3379
+ <tr>
3380
+ <td>
3381
+ <pre class="lines">
3382
+
3383
+
3384
+ 116
3385
+ 117
3386
+ 118
3387
+ 119</pre>
3388
+ </td>
3389
+ <td>
3390
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 116</span>
3391
+
3392
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_open'>on_open</span>
3393
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> websocket connection opened</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3394
+ <span class='ivar'>@connect_blk</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span> <span class='const'>Actor</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
3395
+ <span class='kw'>end</span></pre>
3396
+ </td>
3397
+ </tr>
3398
+ </table>
3399
+ </div>
3400
+
3401
+ <div class="method_details ">
3402
+ <h3 class="signature " id="parse_options-instance_method">
3403
+
3404
+ - (<tt>void</tt>) <strong>parse_options</strong>(options)
3405
+
3406
+
3407
+
3408
+
3409
+
3410
+ </h3><div class="docstring">
3411
+ <div class="discussion">
3412
+ <p class="note returns_void">This method returns an undefined value.</p>
3413
+ <p>check the options list for values and sets default values if not found</p>
3414
+
3415
+
3416
+ </div>
3417
+ </div>
3418
+ <div class="tags">
3419
+ <p class="tag_title">Parameters:</p>
3420
+ <ul class="param">
3421
+
3422
+ <li>
3423
+
3424
+ <span class='name'>options</span>
3425
+
3426
+
3427
+ <span class='type'>(<tt>Hash</tt>)</span>
3428
+
3429
+
3430
+
3431
+ &mdash;
3432
+ <div class='inline'>
3433
+ <p>the options that can be used to connect to webser and send additional data</p>
3434
+ </div>
3435
+
3436
+ </li>
3437
+
3438
+ </ul>
3439
+
3440
+
3441
+
3442
+
3443
+ <p class="tag_title">Options Hash (<tt>options</tt>):</p>
3444
+ <ul class="option">
3445
+
3446
+ <li>
3447
+ <span class="name">:actor</span>
3448
+ <span class="type">(<tt>String</tt>)</span>
3449
+ <span class="default">
3450
+
3451
+ </span>
3452
+
3453
+ &mdash; <div class='inline'>
3454
+ <p>The actor that made the connection</p>
3455
+ </div>
3456
+
3457
+ </li>
3458
+
3459
+ <li>
3460
+ <span class="name">:hostname</span>
3461
+ <span class="type">(<tt>String</tt>)</span>
3462
+ <span class="default">
3463
+
3464
+ </span>
3465
+
3466
+ &mdash; <div class='inline'>
3467
+ <p>The hostname on which the webserver runs on</p>
3468
+ </div>
3469
+
3470
+ </li>
3471
+
3472
+ <li>
3473
+ <span class="name">:port</span>
3474
+ <span class="type">(<tt>String</tt>)</span>
3475
+ <span class="default">
3476
+
3477
+ </span>
3478
+
3479
+ &mdash; <div class='inline'>
3480
+ <p>The port on which the webserver runs on</p>
3481
+ </div>
3482
+
3483
+ </li>
3484
+
3485
+ <li>
3486
+ <span class="name">:path</span>
3487
+ <span class="type">(<tt>String</tt>)</span>
3488
+ <span class="default">
3489
+
3490
+ </span>
3491
+
3492
+ &mdash; <div class='inline'>
3493
+ <p>The request path that the webserver accepts</p>
3494
+ </div>
3495
+
3496
+ </li>
3497
+
3498
+ </ul>
3499
+
3500
+
3501
+
3502
+ </div><table class="source_code">
3503
+ <tr>
3504
+ <td>
3505
+ <pre class="lines">
3506
+
3507
+
3508
+ 65
3509
+ 66
3510
+ 67
3511
+ 68
3512
+ 69
3513
+ 70
3514
+ 71
3515
+ 72</pre>
3516
+ </td>
3517
+ <td>
3518
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 65</span>
3519
+
3520
+ <span class='kw'>def</span> <span class='id identifier rubyid_parse_options'>parse_options</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
3521
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options is not a hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
3522
+ <span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_stringify_keys!'>stringify_keys!</span>
3523
+ <span class='ivar'>@actor</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>actor</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
3524
+ <span class='ivar'>@hostname</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hostname</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>HOST</span><span class='rparen'>)</span>
3525
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PORT</span><span class='rparen'>)</span>
3526
+ <span class='ivar'>@path</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>path</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='const'>CelluloidPubsub</span><span class='op'>::</span><span class='const'>WebServer</span><span class='op'>::</span><span class='const'>PATH</span><span class='rparen'>)</span>
3527
+ <span class='kw'>end</span></pre>
3528
+ </td>
3529
+ </tr>
3530
+ </table>
3531
+ </div>
3532
+
3533
+ <div class="method_details ">
3534
+ <h3 class="signature " id="publish-instance_method">
3535
+
3536
+ - (<tt>void</tt>) <strong>publish</strong>(channel, data)
3537
+
3538
+
3539
+
3540
+
3541
+
3542
+ </h3><div class="docstring">
3543
+ <div class="discussion">
3544
+ <p class="note returns_void">This method returns an undefined value.</p>
3545
+ <p>publishes to a channel some data (can be anything)</p>
3546
+
3547
+
3548
+ </div>
3549
+ </div>
3550
+ <div class="tags">
3551
+ <p class="tag_title">Parameters:</p>
3552
+ <ul class="param">
3553
+
3554
+ <li>
3555
+
3556
+ <span class='name'>channel</span>
3557
+
3558
+
3559
+ <span class='type'>(<tt>string</tt>)</span>
3560
+
3561
+
3562
+
3563
+ </li>
3564
+
3565
+ <li>
3566
+
3567
+ <span class='name'>data</span>
3568
+
3569
+
3570
+ <span class='type'>(<tt>#to_s</tt>)</span>
3571
+
3572
+
3573
+
3574
+ </li>
3575
+
3576
+ </ul>
3577
+
3578
+
3579
+ </div><table class="source_code">
3580
+ <tr>
3581
+ <td>
3582
+ <pre class="lines">
3583
+
3584
+
3585
+ 105
3586
+ 106
3587
+ 107
3588
+ 108
3589
+ 109</pre>
3590
+ </td>
3591
+ <td>
3592
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 105</span>
3593
+
3594
+ <span class='kw'>def</span> <span class='id identifier rubyid_publish'>publish</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
3595
+ <span class='id identifier rubyid_publishing_data'>publishing_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>publish</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>data</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span> <span class='rbrace'>}</span>
3596
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> publishl to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_channel'>channel</span><span class='embexpr_end'>}</span><span class='tstring_content'> message: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3597
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_publishing_data'>publishing_data</span><span class='rparen'>)</span>
3598
+ <span class='kw'>end</span></pre>
3599
+ </td>
3600
+ </tr>
3601
+ </table>
3602
+ </div>
3603
+
3604
+ <div class="method_details ">
3605
+ <h3 class="signature " id="subscribe-instance_method">
3606
+
3607
+ - (<tt>void</tt>) <strong>subscribe</strong>(channel)
3608
+
3609
+
3610
+
3611
+
3612
+
3613
+ </h3><div class="docstring">
3614
+ <div class="discussion">
3615
+ <p class="note returns_void">This method returns an undefined value.</p>
3616
+ <p>subscribes to a channel . need to be used inside the connect block passed
3617
+ to the actor</p>
3618
+
3619
+
3620
+ </div>
3621
+ </div>
3622
+ <div class="tags">
3623
+ <p class="tag_title">Parameters:</p>
3624
+ <ul class="param">
3625
+
3626
+ <li>
3627
+
3628
+ <span class='name'>channel</span>
3629
+
3630
+
3631
+ <span class='type'>(<tt>string</tt>)</span>
3632
+
3633
+
3634
+
3635
+ </li>
3636
+
3637
+ </ul>
3638
+
3639
+
3640
+ </div><table class="source_code">
3641
+ <tr>
3642
+ <td>
3643
+ <pre class="lines">
3644
+
3645
+
3646
+ 91
3647
+ 92
3648
+ 93
3649
+ 94
3650
+ 95</pre>
3651
+ </td>
3652
+ <td>
3653
+ <pre class="code"><span class="info file"># File 'lib/celluloid_pubsub/client_pubsub.rb', line 91</span>
3654
+
3655
+ <span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_channel'>channel</span><span class='rparen'>)</span>
3656
+ <span class='id identifier rubyid_subscription_data'>subscription_data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>client_action</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subscribe</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>channel</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_channel'>channel</span> <span class='rbrace'>}</span>
3657
+ <span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> tries to subscribe </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_enabled?'>debug_enabled?</span>
3658
+ <span class='id identifier rubyid_async'>async</span><span class='period'>.</span><span class='id identifier rubyid_chat'>chat</span><span class='lparen'>(</span><span class='id identifier rubyid_subscription_data'>subscription_data</span><span class='rparen'>)</span>
3659
+ <span class='kw'>end</span></pre>
3660
+ </td>
3661
+ </tr>
3662
+ </table>
3663
+ </div>
3664
+
3665
+ </div>
3666
+
3667
+ </div>
3668
+
3669
+ <div id="footer">
3670
+ Generated on Fri Mar 13 12:25:43 2015 by
3671
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
3672
+ 0.8.7.6 (ruby-2.0.0).
3673
+ </div>
3674
+
3675
+ </body>
3676
+ </html>