reactjs - Kan inte integrera React Typescript med asp.net signalR med hjälp av 'ms-signalr-client'
Jag försöker ansluta asp.net signalR från min react-typescript-klient. Här är min kod.
api.ts:
Metod-1: Installera npm install -d @aspnet/signalr och npm install @microsoft/signalr
import * as signalR from 'ms-signalr-client';
////import * as signalR from '@microsoft/signalr';
export const connect = async () =>{
try{
const connection = new
signalR.HubConnectionBuilder().withUrl("http://localhost:14000/signalr").build();
connection.serverTimeoutInMilliseconds = 300000;
await connection.start();
return connection;
}catch(err)
{
console.error(err);
}
return '';
}
Jag får ett undantag som - TypeError: signalR.HubConnectionBuilder är inte en konstruktor
Tillvägagångssätt-2: Installera 'ms-signalr-client' och Jquery
import $ = require("jquery");
import * as signalR from 'ms-signalr-client';
export const connect = async () =>{
try{
console.log('api.ts');
const connection = (<IJQueryStatic>$).signalR.connection("http://localhost:14000/signalr");
const hubProxy = (<IJQueryStatic>$).signalR.createHubProxy("myHub");
hubProxy.on('SubscribeEvent', data => {
console.log(data);
});
connection.start({ jsonp: true})
.done(() => {console.log('Now connected, connection ID= '+ (<IJQueryStatic>$).signalR.hub.id);})
.fail(()=>{ console.log('Could not connect'); })
}catch(err)
{
console.error(err);
}
return '';
}
interface Hub {
id: string;
state: any;
start(options?: any, callback?: () => any): JQueryPromise<any>;
}
interface SignalR {
log(msg: string, logging: boolean): void;
isCrossDomain(url: string): boolean;
changeState(connection: any, expectedState: number, newState: number): boolean;
isDisconnecting(connection: any): boolean;
hub: Hub;
//connection: HubConnection;
connection: (url: string) => HubConnection;
createHubProxy(hubName: string): signalR.Proxy;
init(url, qs, logging): void;
ajaxDataType: string;
logging: boolean;
reconnectDelay: number;
state: any;
start(options?: any, callback?: () => any): JQueryPromise<any>;
starting(callback?: () => any): SignalR;
send (data): SignalR;
sending (callback?: () => any): SignalR;
received (callback?: (data) => any): SignalR;
stateChanged (callback?: (data) => any): SignalR;
error (callback?: (data) => any): SignalR;
disconnected (callback?: () => any): SignalR;
reconnected (callback?: () => any): SignalR;
stop (async? : boolean): SignalR;
}
interface HubConnection extends SignalR {
hub: Hub;
}
Fel: Kan inte läsa egenskapen 'connection' av undefined från denna rad: const connection=($).signalR.connection("http://localhost:14000/signalr");
Metod-3:
export const connect = async () =>{
try{
console.log('api.ts');
alert($().jquery);
const connection = (<signalRhubConnection>$).hubConnection("http://localhost:14000/signalr");
const hubProxy = connection.createHubProxy("myHub");
hubProxy.on('SubscribeEvent', data => {
console.log(data);
});
connection.start({ jsonp: true})
.done(() => {console.log('Now connected, connection ID= '+ connection.id);})
.fail(()=>{ console.log('Could not connect'); })
}catch(err)
{
console.error(err);
}
return '';
}
interface signalRhubConnection extends JQueryStatic {
connection: (url: string) => signalR.HubConnection
}
Kompileringstidfel: Egenskapen 'hubConnection' finns inte på typen 'signalRhubConnection'. const connection=($).hubConnection("http://localhost:14000/signalr");
Jag svettas verkligen för att lösa det här problemet. Snälla hjälp mig med en möjlig lösning. Tack.