Adapting TS-client to work with non-level-2 xhr

This commit is contained in:
Pawel Kadluczka 2017-08-21 14:38:37 -07:00 committed by Pawel Kadluczka
parent a702713cd4
commit cddc5f8a75
3 changed files with 15 additions and 5 deletions

View File

@ -33,7 +33,7 @@ export class HttpClient implements IHttpClient {
xhr.send(content); xhr.send(content);
xhr.onload = () => { xhr.onload = () => {
if (xhr.status >= 200 && xhr.status < 300) { if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.response); resolve(xhr.response || xhr.responseText);
} }
else { else {
reject(new HttpError(xhr.statusText, xhr.status)); reject(new HttpError(xhr.statusText, xhr.status));

View File

@ -179,6 +179,12 @@ export class LongPollingTransport implements ITransport {
connect(url: string, requestedTransferMode: TransferMode): Promise<TransferMode> { connect(url: string, requestedTransferMode: TransferMode): Promise<TransferMode> {
this.url = url; this.url = url;
this.shouldPoll = true; this.shouldPoll = true;
if (requestedTransferMode === TransferMode.Binary && (typeof new XMLHttpRequest().responseType !== "string")) {
// This will work if we fix: https://github.com/aspnet/SignalR/issues/742
throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");
}
this.poll(this.url, requestedTransferMode); this.poll(this.url, requestedTransferMode);
return Promise.resolve(requestedTransferMode); return Promise.resolve(requestedTransferMode);
} }
@ -197,9 +203,13 @@ export class LongPollingTransport implements ITransport {
if (pollXhr.status == 200) { if (pollXhr.status == 200) {
if (this.onDataReceived) { if (this.onDataReceived) {
try { try {
if (pollXhr.response) { let response = transferMode === TransferMode.Text
this.logger.log(LogLevel.Information, `(LongPolling transport) data received: ${pollXhr.response}`); ? pollXhr.responseText
this.onDataReceived(pollXhr.response); : pollXhr.response;
if (response) {
this.logger.log(LogLevel.Information, `(LongPolling transport) data received: ${response}`);
this.onDataReceived(response);
} }
else { else {
this.logger.log(LogLevel.Information, "(LongPolling transport) timed out"); this.logger.log(LogLevel.Information, "(LongPolling transport) timed out");

View File

@ -4,4 +4,4 @@ export * from "./HttpClient"
export * from "./HubConnection" export * from "./HubConnection"
export * from "./Transports" export * from "./Transports"
export * from "./Loggers" export * from "./Loggers"
export * from "./MessagePackHubProtocol"