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.onload = () => {
if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.response);
resolve(xhr.response || xhr.responseText);
}
else {
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> {
this.url = url;
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);
return Promise.resolve(requestedTransferMode);
}
@ -197,9 +203,13 @@ export class LongPollingTransport implements ITransport {
if (pollXhr.status == 200) {
if (this.onDataReceived) {
try {
if (pollXhr.response) {
this.logger.log(LogLevel.Information, `(LongPolling transport) data received: ${pollXhr.response}`);
this.onDataReceived(pollXhr.response);
let response = transferMode === TransferMode.Text
? pollXhr.responseText
: pollXhr.response;
if (response) {
this.logger.log(LogLevel.Information, `(LongPolling transport) data received: ${response}`);
this.onDataReceived(response);
}
else {
this.logger.log(LogLevel.Information, "(LongPolling transport) timed out");

View File

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