SignalR濡備綍涓嶣lazor WebAssembly搴旂敤闆嗘垚
SignalR鏄竴涓?NET搴擄紝鐢ㄤ簬鍦ㄥ鎴风鍜屾湇鍔″櫒涔嬮棿瀹炴椂閫氫俊銆侭lazor WebAssembly鏄竴涓娇鐢╓ebAssembly鎶€鏈湪娴忚鍣ㄤ腑杩愯.NET浠g爜鐨勬鏋躲€傝鍦˙lazor WebAssembly搴旂敤涓泦鎴怱ignalR锛屽彲浠ユ寜鐓т互涓嬫楠ゆ搷浣滐細
- 鍦˙lazor WebAssembly搴旂敤涓畨瑁匰ignalR瀹㈡埛绔簱锛屽彲浠ヤ娇鐢ㄤ互涓嬪懡浠わ細
dotnet add package Microsoft.AspNetCore.SignalR.Client
- 鍒涘缓涓€涓猄ignalR鏈嶅姟鏉ヨ繛鎺ュ埌SignalR鏈嶅姟鍣紝鍙互鍦˙lazor鐨勬湇鍔′腑娉ㄥ叆SignalR杩炴帴锛?/li>
using Microsoft.AspNetCore.SignalR.Client;
public class SignalRService
{
private HubConnection hubConnection;
public SignalRService()
{
hubConnection = new HubConnectionBuilder()
.WithUrl("https://<your-signalr-server-url>")
.Build();
}
public async Task StartConnection()
{
await hubConnection.StartAsync();
}
public HubConnection GetHubConnection()
{
return hubConnection;
}
}
- 鍦˙lazor缁勪欢涓娇鐢⊿ignalR鏈嶅姟鏉ヨ繛鎺ュ埌SignalR鏈嶅姟鍣ㄥ苟鎺ユ敹瀹炴椂鏁版嵁锛?/li>
@page "/signalr"
@inject SignalRService signalRService
@code {
protected override async Task OnInitializedAsync()
{
await signalRService.StartConnection();
signalRService.GetHubConnection().On<string>("ReceiveMessage", (message) =>
{
// 澶勭悊鎺ユ敹鍒扮殑娑堟伅
});
}
}
- 鍦⊿ignalR鏈嶅姟鍣ㄤ腑鍒涘缓Hub骞跺鐞嗗鎴风鍙戦€佺殑娑堟伅锛?/li>
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", $"{user}: {message}");
}
}
- 鍦˙lazor缁勪欢涓娇鐢⊿ignalR鏈嶅姟鍙戦€佸疄鏃舵秷鎭細
@page "/signalr"
<input @bind="user" placeholder="Enter your name" />
<input @bind="message" placeholder="Enter your message" />
<button @onclick="SendMessage">Send</button>
@code {
private string user;
private string message;
private async Task SendMessage()
{
await signalRService.GetHubConnection().InvokeAsync("SendMessage", user, message);
}
}
閫氳繃浠ヤ笂姝ラ锛屾偍鍙互鍦˙lazor WebAssembly搴旂敤涓泦鎴怱ignalR锛屽苟瀹炵幇瀹炴椂閫氫俊鍔熻兘銆傛偍鍙互鏍规嵁鑷繁鐨勯渶姹備慨鏀逛互涓婁唬鐮佹潵瀹炵幇涓嶅悓鐨勫姛鑳姐€?/p>
相关问答