Blazor - Send Message problem using SignalR
我创建了相当复杂的Blazor应用程序,调用了Web API,注入了服务并使用了第三方库。但是我有史以来第一次使用SignalR。我的设置是:
- ASP.NET Core Web API(繁重的工作)
- 前端-Blazor App(服务器端-通过在blazor项目中创建的Services类调用Web API)
一切正常。我在api中创建了一个集线器并公开了端点。通过开拓者客户端,我可以建立连接,并通过集线器将连接额外的客户端通知所有客户端。
问题
尝试将消息从客户端发送/广播到服务器/集线器时,我收到一条非常奇怪的消息。单击"发送"按钮时,我收到"未捕获的SyntaxError:意外号码"
单击错误链接,它给了我;
System.Runtime.CompilerServices.AsyncTaskMethodBuilder
代码
我的'Index.razror'组件非常简单(如下所示):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | @page"/index" @using Microsoft.AspNetCore.SignalR.Client <input type="text" id="message" class="form-control" bind="@Message" /> <input type="button" id="sendMessage" value="Send" class="btn btn-primary" onclick="@SendMessage()" /> <ul id="discussion"> @foreach (var message in messages) { <li> @message </li> } </ul> @code{ HubConnection connection; string Message =""; IList<string> messages = new List<string>(); protected override async Task OnInitializedAsync() { connection = new HubConnectionBuilder().WithUrl("http://localhost:63572/livedata").Build(); connection.On<string, string>("broadcastMessage", this.OnBroadcastMessage); await connection.StartAsync(); } Task OnBroadcastMessage(string name, string message) { if (!string.IsNullOrEmpty(message)) { messages.Add(name +" :" + message); StateHasChanged(); } return Task.CompletedTask; } async Task SendMessage() { await connection.InvokeAsync("Send","Blazor Client", Message); Message =""; } } |
我的中心类也很简单;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; namespace SignalRTest { public class LiveData : Hub { public override Task OnConnectedAsync() { Clients.All.SendAsync("broadcastMessage","system", $"{Context.ConnectionId} joined the conversation"); return base.OnConnectedAsync(); } public void Send(string name, string message) { Clients.All.SendAsync("broadcastMessage", name, message); } public override Task OnDisconnectedAsync(System.Exception exception) { Clients.All.SendAsync("broadcastMessage","system", $"{Context.ConnectionId} left the conversation"); return base.OnDisconnectedAsync(exception); } } } |
请问有人可以建议如何解决该问题,这样我就可以开始在Blazor中使用SignalR。
非常感谢
对不起,我不好!
非常愚蠢(语法)问题。通常,我使用3rd blazor库(如Radzen,DevExpress等)来生成UI。对于这个出色的signalR客户端应用程序,我使用纯html标签。问题出在"绑定"