Winform 에서 signal 을 사용 합 니 다.
구축 signal r 는 서버 와 클 라 이언 트 서버 로 나 뉜 다.signal 은 Owin 위탁 관 리 를 winform 에서 사용 할 수 있다.
1.우선 nuget 패키지 다운로드:Microsoft.AspNet.Signalr Microsoft.Owin.Hosting Microsoft.Owin.Host.HttpListener
2.winform 에서 의 위탁 관 리 를 프로그램 에서 실현 합 니 다.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var signalrUrl = "http://localhost:8082";
//signalr
var signalr = WebApp.Start(signalrUrl, Configuration);
Application.Run(new Sign());
signalr.Dispose();
//Application.Run(new Form2());
}
public static void Configuration(IAppBuilder app)
{
// , app.usecors configuration usejsonp
HubConfiguration configuration = new HubConfiguration
{
EnableDetailedErrors = true
};
// signalr /signalr http://localhost:8082/signalr
app.MapSignalR(configuration);
}
3.hub 구현
클래스 계승 hub 새로 만 들 기
// hub , HubName , hub myHub
[HubName("DataHub")]
public class MyHub : Hub
{
//
[HubMethodName("Hello")]
public void Hello(string name)
{
// ,
//SayHello
Clients.All.SayHello($" {name} ");
}
}
이렇게 프로그램 을 시작 하면 서버 가 OK 됩 니 다.
클 라 이언 트
다른 winform 프로그램 에서 서비스 에 연결 할 수 있 고 호출 방법 으로 통신 을 실현 할 수 있 습 니 다.
1.nuget 패키지 다운로드 필요:Microsoft.AspNet.Signalr.Client
2.접속 서비스
IHubProxy proxy;
// url signalr
var connection = new HubConnection("http://localhost:8082/signalr");
// hub ,
proxy = connection.CreateHubProxy("CadreHub");
await connection.Start();
// ,
proxy.On<string>("SayHello", (message) =>
{
// messagebox ,
this.BeginInvoke(new Action(() =>
{
MessageBox.Show(msg);
}));
});
3.서비스 에 사용 하 는 방법
private void Button1_Click(object sender, EventArgs e)
{
proxy.Invoke("Hello", "qi");
}
서버 에서 Hub 내 방법 호출
가끔 은 서버 에서 주동 적 으로 호출 하 는 방법 이 필요 합 니 다.그러나 hub 는 예화 할 수 없습니다.hub 를 방문 할 때마다 내부 에서 자동 으로 인 스 턴 스 를 만 듭 니 다.어떻게 조작 하 는 지 정적 인 방법 을 만 들 수 있 습 니 다.그러나 방법 내부 에서 Client 를 직접 사용 할 수 없습니다.Context 를 가 져 와 야 합 니 다.
[HubName("DataHub")]
public class MyHub : Hub
{
//
[HubMethodName("Hello")]
public void Hello(string name)
{
// ,
//SayHello
Clients.All.SayHello($" {name} ");
}
//
public static void Broadcast(string name)
{
// GlobalHost ConnectionManager hub
var context = GlobalHost.ConnectionManager.GetHubContext<DataHub>();
context.Clients.All.SayHello($" {name} _version1.1");
}
}
그리고 다른 종류 에서 호출 할 수 있 습 니 다.
MyHub.Broadcast("little Tom");
시간 이 제한 되 어 비교적 급 하 게 썼 는데,아마도 쓰 지 못 한 것 이 있 을 것 이 니,지도자 가 와 서 빠 져 나 간 것 을 양해 해 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.