Reactjs 无法使用';ms Signal客户端';
我正在尝试从react typescript客户端连接asp.net Signal。这是我的密码 api.ts: 方法1:安装npm安装-d@aspnet/signal和npm安装@microsoft/signalReactjs 无法使用';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
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。我已经用我迄今为止尝试过的内容更新了我的帖子。任何帮助都是值得赞赏的。谢谢