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
			| 
											3 years ago
										 | 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
 |