You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							41 lines
						
					
					
						
							1.6 KiB
						
					
					
				| function isSecure(wsComponents) {
 | |
|     return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === "wss";
 | |
| }
 | |
| //RFC 6455
 | |
| const handler = {
 | |
|     scheme: "ws",
 | |
|     domainHost: true,
 | |
|     parse: function (components, options) {
 | |
|         const wsComponents = components;
 | |
|         //indicate if the secure flag is set
 | |
|         wsComponents.secure = isSecure(wsComponents);
 | |
|         //construct resouce name
 | |
|         wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');
 | |
|         wsComponents.path = undefined;
 | |
|         wsComponents.query = undefined;
 | |
|         return wsComponents;
 | |
|     },
 | |
|     serialize: function (wsComponents, options) {
 | |
|         //normalize the default port
 | |
|         if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === "") {
 | |
|             wsComponents.port = undefined;
 | |
|         }
 | |
|         //ensure scheme matches secure flag
 | |
|         if (typeof wsComponents.secure === 'boolean') {
 | |
|             wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');
 | |
|             wsComponents.secure = undefined;
 | |
|         }
 | |
|         //reconstruct path from resource name
 | |
|         if (wsComponents.resourceName) {
 | |
|             const [path, query] = wsComponents.resourceName.split('?');
 | |
|             wsComponents.path = (path && path !== '/' ? path : undefined);
 | |
|             wsComponents.query = query;
 | |
|             wsComponents.resourceName = undefined;
 | |
|         }
 | |
|         //forbid fragment component
 | |
|         wsComponents.fragment = undefined;
 | |
|         return wsComponents;
 | |
|     }
 | |
| };
 | |
| export default handler;
 | |
| //# sourceMappingURL=ws.js.map
 |