pusher-js
Version:
Pusher Channels JavaScript library for browsers, React Native, NodeJS and web workers
84 lines (74 loc) • 2.15 kB
text/typescript
import * as URLSchemes from 'core/transports/url_schemes';
import URLScheme from 'core/transports/url_scheme';
import Transport from 'core/transports/transport';
import Util from 'core/util';
import * as Collections from 'core/utils/collections';
import TransportHooks from 'core/transports/transport_hooks';
import TransportsTable from 'core/transports/transports_table';
import Runtime from 'runtime';
/** WebSocket transport.
*
* Uses native WebSocket implementation, including MozWebSocket supported by
* earlier Firefox versions.
*/
var WSTransport = new Transport(<TransportHooks>{
urls: URLSchemes.ws,
handlesActivityChecks: false,
supportsPing: false,
isInitialized: function () {
return Boolean(Runtime.getWebSocketAPI());
},
isSupported: function (): boolean {
return Boolean(Runtime.getWebSocketAPI());
},
getSocket: function (url) {
return Runtime.createWebSocket(url);
},
});
var httpConfiguration = {
urls: URLSchemes.http,
handlesActivityChecks: false,
supportsPing: true,
isInitialized: function () {
return true;
},
};
export var streamingConfiguration = Collections.extend(
{
getSocket: function (url) {
return Runtime.HTTPFactory.createStreamingSocket(url);
},
},
httpConfiguration,
);
export var pollingConfiguration = Collections.extend(
{
getSocket: function (url) {
return Runtime.HTTPFactory.createPollingSocket(url);
},
},
httpConfiguration,
);
var xhrConfiguration = {
isSupported: function (): boolean {
return Runtime.isXHRSupported();
},
};
/** HTTP streaming transport using CORS-enabled XMLHttpRequest. */
var XHRStreamingTransport = new Transport(
<TransportHooks>(
Collections.extend({}, streamingConfiguration, xhrConfiguration)
),
);
/** HTTP long-polling transport using CORS-enabled XMLHttpRequest. */
var XHRPollingTransport = new Transport(
<TransportHooks>(
Collections.extend({}, pollingConfiguration, xhrConfiguration)
),
);
var Transports: TransportsTable = {
ws: WSTransport,
xhr_streaming: XHRStreamingTransport,
xhr_polling: XHRPollingTransport,
};
export default Transports;