@@ -21,23 +21,24 @@ var CONTROLLER = window.CONTROLLER = function(phone, stream){
2121 // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
2222 var readycb = function ( session ) { } ;
2323 var receivecb = function ( session ) { } ;
24+ var authcb = function ( ) { } ;
2425 var videotogglecb = function ( session , isEnabled ) { } ;
2526 var audiotogglecb = function ( session , isEnabled ) { } ;
2627
2728 CONTROLLER . ready = function ( cb ) { readycb = cb } ;
29+ CONTROLLER . auth = function ( cb ) { authcb = cb }
2830 CONTROLLER . receive = function ( cb ) { receivecb = cb } ;
2931 CONTROLLER . videoToggled = function ( cb ) { videotogglecb = cb } ;
3032 CONTROLLER . audioToggled = function ( cb ) { audiotogglecb = cb } ;
3133
3234 phone . ready ( function ( ) { readycb ( ) } ) ;
3335 phone . receive ( function ( session ) {
34- CONTROLLER . manageUsers ( session ) ;
36+ manage_users ( session ) ;
3537 receivecb ( session ) ;
3638 } ) ;
37-
3839
3940 // Require some boolean form of authentication to accept a call
40- CONTROLLER . postAuth = function ( session , auth , cb ) {
41+ CONTROLLER . answerCall = function ( session , auth , cb ) {
4142 auth ( acceptCall ( session , cb ) , session ) ;
4243 }
4344
@@ -51,21 +52,65 @@ var CONTROLLER = window.CONTROLLER = function(phone, stream){
5152 // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
5253 // Setup broadcasting, your screen to all.
5354 // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
54- CONTROLLER . broadcast = function ( vid ) {
55+ var streamreceivecb = function ( m ) { } ;
56+ var streamprescb = function ( m ) { } ;
57+ var stream_name = "" ;
58+
59+
60+ CONTROLLER . streamPresence = function ( cb ) { streamprescb = cb ; }
61+ CONTROLLER . streamReceive = function ( cb ) { streamreceivecb = cb ; }
62+
63+ function broadcast ( vid ) {
5564 var video = document . createElement ( 'video' ) ;
65+
5666 video . src = URL . createObjectURL ( phone . mystream ) ;
5767 video . volume = 0.0 ;
5868 video . play ( ) ;
59- vid . innerHTML = ""
60- vid . appendChild ( video ) ;
61- vid . style . cssText = "-moz-transform: scale(-1, 1); \
62- -webkit-transform: scale(-1, 1); -o-transform: scale(-1, 1); \
63- transform: scale(-1, 1); filter: FlipH;" ;
69+ //vid.innerHTML=""
70+ vid . setAttribute ( 'data-number' , phone . number ( ) ) ;
71+ vid . style . cssText = "-moz-transform: scale(-1, 1); \
72+ -webkit-transform: scale(-1, 1); -o-transform: scale(-1, 1); \
73+ transform: scale(-1, 1); filter: FlipH;" ;
74+ vid . appendChild ( video ) ;
6475 } ;
6576
77+ function stream_subscribe ( name ) {
78+ var ch = ( name ? name : phone . number ( ) ) + "-stream" ;
79+ pubnub . subscribe ( {
80+ channel : ch ,
81+ message : streamreceivecb ,
82+ presence : streamprescb ,
83+ connect : function ( ) { stream_name = ch ; console . log ( "Streaming channel " + ch ) ; }
84+ } ) ;
85+ }
86+
87+ CONTROLLER . stream = function ( ) {
88+ stream_subscribe ( ) ;
89+ }
90+
91+ CONTROLLER . joinStream = function ( name ) {
92+ stream_subscribe ( name ) ;
93+ publishCtrl ( controlChannel ( name ) , "userJoin" , phone . number ( ) ) ;
94+ }
95+
96+ CONTROLLER . send = function ( message , number ) {
97+ if ( isStream ) return stream_message ( message ) ;
98+ phone . send ( message , number ) ;
99+ } ;
100+
101+ function stream_message ( message ) {
102+ if ( ! stream_name ) return ; // Not in a stream
103+ pubnub . publish ( {
104+ channel : stream_name ,
105+ message : msg ,
106+ callback : function ( m ) { console . log ( m ) }
107+ } ) ;
108+ }
109+
110+
66111 // Give it a div and it will set up the thumbnail image
67- CONTROLLER . registerThumbnailHolder = function ( thumbnailHolder ) {
68- CONTROLLER . broadcast ( thumbnailHolder ) ;
112+ CONTROLLER . addLocalStream = function ( streamHolder ) {
113+ broadcast ( streamHolder ) ;
69114 } ;
70115
71116 CONTROLLER . dial = function ( number ) { // Authenticate here??
@@ -117,26 +162,30 @@ transform: scale(-1, 1); filter: FlipH;";
117162 } ) ;
118163 } ;
119164
120- CONTROLLER . manageUsers = function ( session ) {
165+ CONTROLLER . isStreaming = function ( number , cb ) {
166+ CONTROLLER . isOnline ( number + "-stream" , cb ) ;
167+ } ;
168+
169+ function manage_users ( session ) {
121170 if ( session . number == phone . number ( ) ) return ; // Do nothing if it is self.
122- console . log ( phone . number ( ) ) ;
123- console . log ( session . number ) ;
124171 var idx = findWithAttr ( userArray , "number" , session . number ) ; // Find session by number
125172 if ( session . closed ) {
126173 if ( idx != - 1 ) userArray . splice ( idx , 1 ) [ 0 ] ; // User leaving
127174 } else { // New User added to stream/group
128175 if ( idx == - 1 ) { // Tell everyone in array of new user first, then add to array.
129- if ( ! isStream ) {
130- publishCtrlAll ( "userJoin" , session . number ) ;
131- }
176+ if ( ! isStream ) publishCtrlAll ( "userJoin" , session . number ) ;
132177 userArray . push ( session ) ;
133178 }
134179 }
135180 userArray = userArray . filter ( function ( s ) { return ! s . closed ; } ) ; // Clean to only open talks
136181 console . log ( userArray ) ;
137182 }
138183
139- function addToGroupChat ( number ) {
184+ function add_to_stream ( number ) {
185+ phone . dial ( number ) ;
186+ }
187+
188+ function add_to_group ( number ) {
140189 var session = phone . dial ( number , get_xirsys_servers ( ) ) ; // Dial Number
141190 if ( ! session ) return ; // No Dupelicate Dialing Allowed
142191 }
@@ -159,7 +208,7 @@ transform: scale(-1, 1); filter: FlipH;";
159208 }
160209
161210 function subscribe ( ) {
162- pubnub . subscribe ( {
211+ pubnub . subscribe ( {
163212 channel : ctrlChan ,
164213 message : receive ,
165214 connect : function ( ) { console . log ( "Subscribed to " + ctrlChan ) ; }
@@ -168,8 +217,13 @@ transform: scale(-1, 1); filter: FlipH;";
168217
169218 function receive ( m ) {
170219 switch ( m . type ) {
220+ case "userCall" :
221+ callAuth ( m . data ) ;
222+ break ;
171223 case "userJoin" :
172- addToGroupChat ( m . data ) ;
224+ alert ( isStream ) ;
225+ if ( isStream ) add_to_stream ( m . data ) ; // JOIN STREAM HERE!
226+ else add_to_group ( m . data ) ;
173227 break ;
174228 case "userLeave" :
175229 var idx = findWithAttr ( userArray , "number" , m . data ) ;
@@ -178,18 +232,15 @@ transform: scale(-1, 1); filter: FlipH;";
178232 case "userVideo" :
179233 var idx = findWithAttr ( userArray , "number" , m . data . user ) ;
180234 var vidEnabled = m . data . video ;
181- if ( idx != - 1 )
182- videotogglecb ( userArray [ idx ] , vidEnabled ) ;
235+ if ( idx != - 1 ) videotogglecb ( userArray [ idx ] , vidEnabled ) ;
183236 break ;
184237 case "userAudio" :
185238 var idx = findWithAttr ( userArray , "number" , m . data . user ) ;
186239 var audEnabled = m . data . audio ;
187- if ( idx != - 1 )
188- audiotogglecb ( userArray [ idx ] , audEnabled ) ;
240+ if ( idx != - 1 ) audiotogglecb ( userArray [ idx ] , audEnabled ) ;
189241 break ;
190242 }
191243 console . log ( m ) ;
192- console . log ( userArray ) ;
193244 }
194245
195246 function findWithAttr ( array , attr , value ) {
0 commit comments