- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个问题,我想在有人连接到集线器时向前端发送一个事件,但前端没有收到通知。我想我可能对直接从集线器调用方法与使用 IHubContext 调用方法感到困惑。我找不到与这些版本相关的太多信息,因此非常感谢您的帮助!
包版本:
Server side (.Net Core 2.2): Microsoft.AspNetCore.SignalR (1.1.0)
Client side (React): @aspnet/signalr:1.1.0
所以这是我的示例中心:
public class MyHub: Hub<IMyHub>
{
public override async Task OnConnectedAsync()
{
// This newMessage call is what is not being received on the front end
await Clients.All.SendAsync("newMessage", "test");
// This console.WriteLine does print when I bring up the component in the front end.
Console.WriteLine("Test");
await base.OnConnectedAsync();
}
public Task SendNewMessage(string message)
{
return Clients.All.SendAsync("newMessage", message);
}
}
现在,我目前的工作调用是在一个服务中,但它正在像这样发送“newMessage”:
public class MessageService: IMessageService
{
private readonly IHubContext<MyHub> _myHubContext;
public MessageService(IHubContext<MyHub> myHubContext)
{
_myHubContext = myHubContext;
}
public async Task SendMessage(string message)
{
// I noticed tis calls SendAsync from the hub context,
// instead of the SendMessage method on the hub, so maybe
// the onConnectedAsync needs to be called from the context somehow also?
await _myHubContext.Clients.All.SendAsync("newMessage", message);
}
}
所以上面的服务方法调用有效并且会联系前端,这是我在 react 组件中的前端连接的例子:
const signalR = require('@aspnet/signalr');
class MessageComponent extends React.Component {
connection: any = null;
componentDidMount() {
this.connection = new signalR.HubConnectionBuilder()
.withUrl('http://localhost:9900/myHub')
.build();
this.connection.on('newMessage', (message: string) => {
// This works when called from the service IHubContext
// but not OnConncectedAsync in MyHub
console.log(message);
});
this.connection.start();
}
componentWillUnmount() {
this.connection.stop();
}
render() {
...
}
}
最佳答案
这是因为您使用的是强类型集线器 (https://learn.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-2.2#strongly-typed-hubs)。
我假设您在 IMyHub
接口(interface)上定义了 SendAsync
,因此服务器使用 method = SendAsync, arguments = "newMessage", "test “
。如果您删除了 IMyHub
类型,那么这将按预期工作。
关于asp.net-core - AspNetCore.SignalR SendAsync 未在 OnConnectedAsync 内部触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332558/
我有一个使用 *Async 方法(如 SendAsync)通过套接字进行通信的应用程序。我在执行 SendAsync 但未通过网络发送数据时遇到这种奇怪的行为。 我已启用网络跟踪并获得以下日志: Sy
我编写了一个小 winforms 应用程序,它向本地网络中的每个 IP 地址发送 http 请求,以发现我的某个设备。在我的特定子网掩码上,有 512 个地址。我已经使用 backGroundWork
我一直在关注this VSTF_RD_Bot example code . 我无法构建此代码,因为我收到以下消息: The type arguments for method 'Conversatio
如以下简化代码所示,检查 SendAsync() 是否已完成缓冲区中所有预期字节的传输是正确的做法吗?还是那是多余的?这是一个 TCP 连接套接字。我特别担心必须在 ProcessSend() 中发出
在使用 SendAsync 时处理 SmtpClient 和 MailMessage 的正确方法是什么? 我已经在下面复制了我的代码。 { ... var client = new SmtpClien
我正在使用 SendAsync 方法循环发送 1000 条消息,并在这行代码中得到下面的异常 await _ws.SendAsync(new ArraySegment(messageBuffer, o
In asp.net - using Message Handlers - 我可以通过添加消息处理程序来自定义请求/响应。 因此,一个请求进入,通过多个消息处理程序,然后响应通过相同的处理程序(在相反
我正在调用以下函数来获取访问 token ,以便使用 REST Api 检索 Twitter 用户个人资料。 public async Task GetAccessToken() {
我刚刚编写了一些测试代码来查看 System.Net.Mail.SmtpClient 向我自己发送相同的消息。 int numClients = 10; List mailClients = new
我正在尝试使用 Atomix 在 Java 的两个进程之间发送消息和 Netty 。我有一个名为 Starter 的程序,它负责向所有正在等待该消息的正在运行的进程发送消息。 这是入门版: Addre
我正在尝试用 C# 构建一个小型应用程序,以从 Microsoft Graph API 检索建议的 session 时间。身份验证后,我调用 graphClient.HttpProvider.Send
我正在尝试编写一个辅助类来在我的 C# 应用程序中发送电子邮件。我想使用 SmtpClient.SendAsync,但显然我不了解异步的工作原理或者我设置了错误: public class Email
在我的应用程序中,我使用 Dataflow 库中的 ActionBlock,使用 SmtpClient.SendAsync() 发送电子邮件警报方法,它不会阻止调用线程。(ActionBlock 从
应用程序要求使用 SendAsync 而不仅仅是发送。所以我制作了一个 CEmailServer 类并设置了所有内容。到目前为止, Send 工作正常,但是当将其更改为与 SendAsync 一起使用
我有一个 Websocket HTTPListener 作为服务器,客户端是 WebSocket的 我将所有当前客户端保存在一个列表中,我想要一个向所有客户端异步发送信息的函数。 所以我目前拥有的是:
我正在尝试优化一个 tcp 套接字包装器,它在处理大量入站连接时遇到了困难。我正在一个基本的聊天服务器和一个小型客户端应用程序中测试它以将客户端发送给它。这两个应用程序都位于通过千兆交换机连接的单独
我正在尝试熟悉 smtp.SendAsync,但出于某种原因,我无法让邮件消息发送异步。 这是我试过的。 //smtp.SendAsync(mm, null)); Error, Async opera
我正在摆弄 Silverlight 的 TCP 通信,我被迫使用 System.Net.Sockets.Socket 类,它在 Silverlight 运行时只有异步方法。 我想知道如果两个线程在很短
我正在使用 .NET 4.0 的 ASP.NET Web API 客户端库(Microsoft.AspNet.WebApi.Client 版本 4.0.30506.0)。 我需要发送带有请求正文的 H
我有一个接口(interface),它有一个方法来创建队列客户端和消息工厂的实例。我已经创建了相同的具体实现,现在我正在尝试对用于将消息发送到队列的功能进行单元测试。我已经为相同的代码编写了以下代码:
我是一名优秀的程序员,十分优秀!