1
1
var socketIOURL = '//' + location . host + '/socket.io/socket.io.js' ;
2
- MixJS . loadJS ( socketIOURL )
2
+ MixJS . loadJS ( socketIOURL ) ;
3
+
3
4
Slide . Control . add ( 'socket' , function ( S , broadcast ) {
5
+ S . clientUID = 0 ;
4
6
5
7
var timer ;
6
8
//检查是否加载完成socket.io.js
@@ -21,82 +23,101 @@ Slide.Control.add('socket', function(S, broadcast) {
21
23
host : '' ,
22
24
role : '' , //角色
23
25
clientConnect : function ( ) {
24
- console . log ( this . host + '/control' ) ;
25
26
//角色是client,即被控制端,则连控制端服务器
26
- webSocket = io . connect ( this . host + '/control' ) ;
27
- webSocket . on ( 'system' , function ( data ) {
28
- console . log ( data ) ;
29
- } ) ;
30
- webSocket . on ( 'from control update' , function ( data ) {
31
- broadcast . fire ( 'from control update' , data . id ) ;
32
- } ) ;
33
- webSocket . on ( 'from control updateItem' , function ( data ) {
34
- broadcast . fire ( 'from control updateItem' , data . id , data . item ) ;
35
- } ) ;
36
- webSocket . on ( 'from control key event' , function ( data ) {
37
- broadcast . fire ( 'from control key event' , data . keyCode ) ;
38
- } )
39
- webSocket . on ( 'from control order' , function ( data ) {
40
- var fnName = data . fn ;
41
- var args = data . args ;
42
- try {
43
- args = JSON . parse ( args ) ;
44
- } catch ( e ) { }
45
- Slide . proxyFn ( fnName , args ) ;
27
+
28
+ webSocket . on ( 'data from another client' , function ( data ) {
29
+ var action = data . action ;
30
+ switch ( action ) {
31
+ case 'from control update' :
32
+ broadcast . fire ( 'from control update' , data . id ) ;
33
+ break ;
34
+ case 'from control updateItem' :
35
+ broadcast . fire ( 'from control updateItem' , data . id , data . item ) ;
36
+ break ;
37
+ case 'from control key event' :
38
+ broadcast . fire ( 'from control key event' , data . keyCode ) ;
39
+ break ;
40
+ case 'from control order' :
41
+ var fnName = data . fn ;
42
+ var args = data . args ;
43
+ try {
44
+ args = JSON . parse ( args ) ;
45
+ } catch ( e ) { }
46
+ Slide . proxyFn ( fnName , args ) ;
47
+ break ;
48
+ }
46
49
} ) ;
50
+
47
51
} ,
48
52
controlConnect : function ( ) {
53
+ webSocket . emit ( 'add client' , {
54
+ targetUid : this . clientUID
55
+ } ) ;
49
56
50
57
//控制端不在直接运行函数,而是变成发送socket给client
51
58
//注意参数,进行了json处理哦~
52
59
Slide . proxyFn = function ( fnName , args ) {
53
60
args = JSON . stringify ( args ) ;
54
- webSocket . emit ( 'from control user order' , {
61
+ webSocket . emit ( 'repost data' , {
62
+ action : 'from control order' ,
55
63
fn : fnName ,
56
64
args : args
57
- } ) ;
65
+ } )
58
66
}
59
67
//角色是控制端,则连被控制端(client)服务器
60
- webSocket = io . connect ( this . host + '/client' ) ;
61
- webSocket . on ( 'system' , function ( data ) {
62
- console . log ( data ) ;
63
- } ) ;
64
- webSocket . on ( 'from client update' , function ( data ) {
65
- broadcast . fire ( 'from control update' , data . id ) ;
66
- } ) ;
67
- webSocket . on ( 'from client updateItem' , function ( data ) {
68
- broadcast . fire ( 'from control updateItem' , data . id , data . item ) ;
68
+
69
+ webSocket . on ( 'data from another client' , function ( data ) {
70
+ var action = data . action ;
71
+ switch ( action ) {
72
+ case 'from client update' :
73
+ broadcast . fire ( 'from control update' , data . id ) ;
74
+ break ;
75
+ case 'from client updateItem' :
76
+ broadcast . fire ( 'from control updateItem' , data . id , data . item ) ;
77
+ break ;
78
+
79
+ }
69
80
} ) ;
70
- // webSocket.on('from client proxyFn', function(data) {
71
- // var fnName = data.fnName;
72
- // var args = data.args;
73
- // });
81
+
74
82
} ,
75
83
connect : function ( ) {
84
+ webSocket = io . connect ( this . host ) ;
85
+ webSocket . on ( 'UUID' , function ( uid ) {
86
+ webSocket . uid = uid ;
87
+ } ) ;
88
+ webSocket . on ( 'system' , function ( data ) {
89
+ console . log ( data ) ;
90
+ } ) ;
91
+
76
92
this [ this . role + 'Connect' ] ( ) ;
77
93
} ,
78
94
update : function ( id ) {
79
- webSocket . emit ( 'from ' + Socket . role + ' user update' , {
95
+ webSocket . emit ( 'repost data' , {
96
+ action : 'from ' + Socket . role + ' update' ,
80
97
id : id
81
98
} ) ;
82
99
} ,
83
100
updateItem : function ( id , item ) {
84
- webSocket . emit ( 'from ' + Socket . role + ' user updateItem' , {
101
+ webSocket . emit ( 'repost data' , {
102
+ action : 'from ' + Socket . role + ' updateItem' ,
85
103
id : id ,
86
104
item : item
87
105
} ) ;
88
106
} ,
89
107
keyEvent : function ( keyCode ) {
90
- webSocket . emit ( 'from ' + Socket . role + ' user key event' , {
108
+ webSocket . emit ( 'repost data' , {
109
+ action : 'from ' + Socket . role + ' key event' ,
91
110
keyCode : keyCode
92
111
} ) ;
93
-
94
112
} ,
95
113
96
114
init : function ( args ) {
97
115
this . host = args . host || location . href ;
116
+ this . clientUID = location . hash . slice ( 8 ) ;
117
+ console . log ( this . clientUID ) ;
98
118
//角色,是否为控制端
99
119
if ( args . isControl ) {
120
+ console . log ( this . clientUID ) ;
100
121
this . role = 'control' ;
101
122
document . body . classList . add ( 'popup' ) ;
102
123
document . body . classList . add ( 'with-notes' ) ;
0 commit comments