javascript – 尝试通过signalR发送消息时,客户端为空
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 尝试通过signalR发送消息时,客户端为空,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1918字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 尝试通过signalR发送消息时,客户端为空](/upload/InfoBanner/zyjiaocheng/791/5fd8b85712334390a94503d61193f711.jpg)
我在我的MVC应用程序中有以下集线器,我想在其中向客户端代码发送一条简单的消息:
using SignalR.Hubs;
public class Progress : Hub
{
public void
Send(string message)
{
// Call the addMessage method on all clients
Clients.addMessage(message);
}
public Progress()
{
Clients.addMessage("Starting to analyze image");
}
}
以及我认为的以下javascript
<script src="/Scripts/jquery.signalR.js" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
// Proxy created on the fly
var connection = $.connection('/signalr/hubs/progress');
// Declare a function on the chat hub so the server can invoke it
connection.addMessage = function (message) {
$('#messages').append('<li>' + message.Content + '</li>');
};
// Start the connection
connection.start();
});
</script>
}
我的问题是当代码调用构造函数或者发送方法时,Clients对象为null.
调试客户端代码时,一切看起来都不错. / signalr / hubs / route返回javascript代码,运行javascript时没有错误.
我可以补充说,后端代码运行在Umbraco 5 CMS环境之上,我不确定是否会造成任何干扰.
有关如何调试/解决此问题的任何建议?
解决方法:
听起来您正试图通过实例化集线器来从服务器端代码广播消息.不幸的是,它并不像那样.您可以在此处查看如何从服务器端发送消息的示例:https://github.com/SignalR/SignalR/wiki/Hubs.请查看“从集线器外部通过集线器广播”部分.
以下内容将用于您要从中进行广播的服务器端
using SignalR.Infrastructure;
string message = "Test Message";
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<MyHub>();
clients.addMessage(message);
这与您的Send()方法匹配,但是如果您尝试设置进度指示器,则可能只想向调用方发送消息.在这种情况下,您需要将Progress方法更新为Caller.addMessage(“开始分析图像”);.要从集线器外部执行此操作有点棘手,因为您需要跟踪要更新的连接的客户端ID.一旦您知道上述更改为:
clients[clientId].addMessage(message);
内容总结
以上是互联网集市为您收集整理的javascript – 尝试通过signalR发送消息时,客户端为空全部内容,希望文章能够帮你解决javascript – 尝试通过signalR发送消息时,客户端为空所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。