UNPKG

pusher-js

Version:

Pusher Channels JavaScript library for browsers, React Native, NodeJS and web workers

66 lines (58 loc) 1.78 kB
import { default as Transports, streamingConfiguration, pollingConfiguration } from 'isomorphic/transports/transports'; import Transport from 'core/transports/transport'; import TransportHooks from 'core/transports/transport_hooks'; import * as URLSchemes from 'core/transports/url_schemes'; import Runtime from 'runtime'; import { Dependencies } from '../dom/dependencies'; import * as Collections from 'core/utils/collections'; var SockJSTransport = new Transport(<TransportHooks>{ file: 'sockjs', urls: URLSchemes.sockjs, handlesActivityChecks: true, supportsPing: false, isSupported: function() { return true; }, isInitialized: function() { return window.SockJS !== undefined; }, getSocket: function(url, options) { return new window.SockJS(url, null, { js_path: Dependencies.getPath('sockjs', { useTLS: options.useTLS }), ignore_null_origin: options.ignoreNullOrigin }); }, beforeOpen: function(socket, path) { socket.send( JSON.stringify({ path: path }) ); } }); var xdrConfiguration = { isSupported: function(environment): boolean { var yes = Runtime.isXDRSupported(environment.useTLS); return yes; } }; /** HTTP streaming transport using XDomainRequest (IE 8,9). */ var XDRStreamingTransport = new Transport( <TransportHooks>( Collections.extend({}, streamingConfiguration, xdrConfiguration) ) ); /** HTTP long-polling transport using XDomainRequest (IE 8,9). */ var XDRPollingTransport = new Transport( <TransportHooks>Collections.extend({}, pollingConfiguration, xdrConfiguration) ); Transports.xdr_streaming = XDRStreamingTransport; Transports.xdr_polling = XDRPollingTransport; Transports.sockjs = SockJSTransport; export default Transports;