forked from coolaj86/telebit.js
		
	added handling for 'hello' from the server
This commit is contained in:
		
							parent
							
								
									425cf4bc24
								
							
						
					
					
						commit
						6901a4ef2d
					
				
							
								
								
									
										42
									
								
								wsclient.js
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								wsclient.js
									
									
									
									
									
								
							| @ -98,6 +98,18 @@ function run(copts) { | |||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   function sendAllTokens() { | ||||||
|  |     tokens.forEach(function (jwtoken) { | ||||||
|  |       sendCommand('add_token', jwtoken) | ||||||
|  |         .catch(function (err) { | ||||||
|  |           console.error('failed re-adding token', jwtoken, 'after reconnect', err); | ||||||
|  |           // Not sure if we should do something like remove the token here. It worked
 | ||||||
|  |           // once or it shouldn't have stayed in the list, so it's less certain why
 | ||||||
|  |           // it would have failed here.
 | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   var packerHandlers = { |   var packerHandlers = { | ||||||
|     oncontrol: function (opts) { |     oncontrol: function (opts) { | ||||||
|       var cmd, err; |       var cmd, err; | ||||||
| @ -119,8 +131,22 @@ function run(copts) { | |||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       // TODO: handle a "hello" message that let's us know we're authenticated.
 |       if (cmd[0] === 0) { | ||||||
|       err = { message: 'unknown command '+cmd[1], code: 'E_UNKNOWN_COMMAND' }; |         console.warn('received dis-associated error from server', cmd[1]); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       if (cmd[1] === 'hello') { | ||||||
|  |         // We only get the 'hello' event after the token has been validated
 | ||||||
|  |         authenticated = true; | ||||||
|  |         sendAllTokens(); | ||||||
|  |         // TODO: handle the versions and commands provided by 'hello' - isn't super important
 | ||||||
|  |         // yet since there is only one version and set up commands.
 | ||||||
|  |         err = null; | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |         err = { message: 'unknown command "'+cmd[1]+'"', code: 'E_UNKNOWN_COMMAND' }; | ||||||
|  |       } | ||||||
| 
 | 
 | ||||||
|       wsHandlers.sendMessage(Packer.pack(null, [-cmd[0], err], 'control')); |       wsHandlers.sendMessage(Packer.pack(null, [-cmd[0], err], 'control')); | ||||||
|     } |     } | ||||||
| @ -134,8 +160,6 @@ function run(copts) { | |||||||
|       var str; |       var str; | ||||||
|       var m; |       var m; | ||||||
| 
 | 
 | ||||||
|       authenticated = true; |  | ||||||
| 
 |  | ||||||
|       if (localclients[cid]) { |       if (localclients[cid]) { | ||||||
|         //console.log("[=>] received data from '" + cid + "' =>", opts.data.byteLength);
 |         //console.log("[=>] received data from '" + cid + "' =>", opts.data.byteLength);
 | ||||||
|         localclients[cid].write(opts.data); |         localclients[cid].write(opts.data); | ||||||
| @ -268,16 +292,6 @@ function run(copts) { | |||||||
|       console.info("[open] connected to '" + copts.stunneld + "'"); |       console.info("[open] connected to '" + copts.stunneld + "'"); | ||||||
|       wsHandlers.refreshTimeout(); |       wsHandlers.refreshTimeout(); | ||||||
|       timeoutId = setTimeout(wsHandlers.checkTimeout, activityTimeout); |       timeoutId = setTimeout(wsHandlers.checkTimeout, activityTimeout); | ||||||
| 
 |  | ||||||
|       tokens.forEach(function (jwtoken) { |  | ||||||
|         sendCommand('add_token', jwtoken) |  | ||||||
|           .catch(function (err) { |  | ||||||
|             console.error('failed re-adding token', jwtoken, 'after reconnect', err); |  | ||||||
|             // Not sure if we should do something like remove the token here. It worked
 |  | ||||||
|             // once or it shouldn't have stayed in the list, so it's less certain why
 |  | ||||||
|             // it would have failed here.
 |  | ||||||
|           }); |  | ||||||
|       }); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   , onClose: function () { |   , onClose: function () { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user