Reactjs 无法使用';ms Signal客户端';

Reactjs 无法使用';ms Signal客户端';,reactjs,typescript,signalr,Reactjs,Typescript,Signalr,我正在尝试从react typescript客户端连接asp.net Signal。这是我的密码 api.ts: 方法1:安装npm安装-d@aspnet/signal和npm安装@microsoft/signal import * as signalR from 'ms-signalr-client'; ////import * as signalR from '@microsoft/signalr'; export const connect = async () =>{ t

我正在尝试从react typescript客户端连接asp.net Signal。这是我的密码

api.ts:

方法1:安装npm安装-d@aspnet/signal和npm安装@microsoft/signal

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 '';
}
我得到了一个例外-
TypeError:signal.HubConnectionBuilder不是构造函数

方法2:安装“ms信号器客户端”和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;
}
import$=require(“jquery”);
从“ms信号器客户端”导入*作为信号器;
export const connect=async()=>{
试一试{
console.log('api.ts');
常量连接=($).signalR.connection(“http://localhost:14000/signalr");
const hubProxy=($).signal.createHubProxy(“myHub”);
hubProxy.on('SubscribeEvent',data=>{
控制台日志(数据);
});
connection.start({jsonp:true})
.done(()=>{console.log('现在已连接,连接ID='+($).signal.hub.ID);})
.fail(()=>{console.log('cannotconnect');})
}捕捉(错误)
{
控制台错误(err);
}
返回“”;
}
接口集线器{
id:字符串;
国家:任何;
开始(选项?:任何,回调?:()=>any):JQueryPromise;
}
接口信号器{
日志(msg:string,logging:boolean):void;
isCrossDomain(url:string):布尔值;
changeState(连接:任意,expectedState:number,newState:number):布尔值;
isDisconnecting(连接:任意):布尔值;
枢纽:枢纽;
//连接:轮毂连接;
连接:(url:string)=>HubConnection;
createHubProxy(hubName:string):signal.Proxy;
init(url,qs,logging):void;
ajaxDataType:字符串;
日志:布尔;
重新连接延迟:数字;
国家:任何;
开始(选项?:任何,回调?:()=>any):JQueryPromise;
启动(回调?:()=>任何):信号器;
发送(数据):信号机;
发送(回调?:()=>任何):信号器;
接收(回调?:(数据)=>任何):信号器;
stateChanged(回调?:(数据)=>any):信号器;
错误(回调?:(数据)=>任何):信号器;
断开连接(回调?:()=>任何):信号器;
重新连接(回调?:()=>任何):信号器;
停止(异步?:布尔):信号器;
}
接口连接扩展信号器{
枢纽:枢纽;
}
错误:无法从此行读取未定义的属性“connection”: 常量连接=($).signalR.connection(“http://localhost:14000/signalr");

方法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
}
export const connect=async()=>{
试一试{
console.log('api.ts');
警报($().jquery);
常量连接=($).hubConnection(“http://localhost:14000/signalr");
const hubbroxy=connection.createhubbroxy(“myHub”);
hubProxy.on('SubscribeEvent',data=>{
控制台日志(数据);
});
connection.start({jsonp:true})
.done(()=>{console.log('现在已连接,连接ID='+connection.ID);})
.fail(()=>{console.log('cannotconnect');})
}捕捉(错误)
{
控制台错误(err);
}
返回“”;
}
接口SignalHubConnection扩展了JQueryStatic{
连接:(url:string)=>signal.HubConnection
}
编译时错误:类型“signalRhubConnection”上不存在属性“hubConnection”。 常量连接=($).hubConnection(“http://localhost:14000/signalr");

为了解决这个问题,我真是汗流浃背。请帮我找到可能的解决办法。
谢谢。

看起来您正在使用不推荐使用的客户端。尝试安装
@microsoft/signal
软件包,然后从'@microsoft/signal'导入*作为signar,我开始尝试安装'@microsoft/signal'和'@aspnet/signal'软件包,它们都引发异常,抱怨它们只与.net内核兼容。我使用的是普通的asp.net.Hi。我已经用我迄今为止尝试过的内容更新了我的帖子。任何帮助都是值得赞赏的。谢谢。看起来您正在使用不推荐使用的客户端。尝试安装
@microsoft/signal
软件包,然后从'@microsoft/signal'导入*作为signar,我开始尝试安装'@microsoft/signal'和'@aspnet/signal'软件包,它们都引发异常,抱怨它们只与.net内核兼容。我使用的是普通的asp.net.Hi。我已经用我迄今为止尝试过的内容更新了我的帖子。任何帮助都是值得赞赏的。谢谢