SignalR 2.0 服务器端方法不会被触发
SignalR 2.0 Serverside methods wont get fired
我试图实现一些简单的SignalR功能。我查找了一些教程,并能够在合理的时间内从服务器触发javascript代码。然而,反过来,似乎对我不起作用。每当我尝试从 javascript 调用服务器方法时,客户端方法都会触发,向服务器发送请求,但服务器端没有任何反应。该请求具有正常的 200 状态代码,但使用 firebug 我得到了以下 xml 返回:
XML-parseError: 未找到元素 位置: moz-nullprincipal:{b526d81f-4593-4eac-b81d-ebc4a3ef6a39} 行号 1, Coll 1:^
我不知道这是否与此有关,但这是我得到的唯一反馈。
中心:
namespace MusicSharing
{
public class PlayerHub : Hub
{
public string Connect(string userName)
{
var test = userName;
return userName;
}
}
}
添加脚本引用:
<script type="text/JavaScript" src="Scripts/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="Scripts/jquery.signalR-2.0.0.min.js"></script>
<script src="http://localhost:50287/signalr/hubs"></script>
javascript:
var chat = $.connection.playerHub;
$.connection.hub.start().done(function () {
chat.server.connect("testing");
});
启动:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(MusicSharing.Startup))]
namespace MusicSharing
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
这基本上是我关于 SignalR 的所有代码。我错过了什么还是..?
编辑:ping函数按预期工作;回应是乒乓球
编辑2:onConnect也会被触发,所以它在连接中没有任何内容。它似乎不想触发自定义方法。
您看到的问题不是由于 SignalR 造成的。 SignalR 与 XML 没有任何关联(它只使用 JSON)。 此外,您的代码看起来很准确,但有一个假设:
<script src="http://localhost:50287/signalr/hubs"></script>
可以重写为
<script src="/signalr/hubs"></script>
这意味着您没有执行跨域 SignalR,您只是碰巧通过完整路径包含集线器文件。
您的"连接"方法是让服务器调用客户端。如果要从客户端调用服务器代码,请尝试使用 ajax。下面是调用 MVC 控制器方法的高级示例
public class PlayerHub : Hub
{
//This server method would be called from another class or controller
//In turn it will call the client
public string Connect(string userName)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<JobInfoHub>();
context.Clients.All.doSomething();
}
}
var chat = $.connection.playerHub;
$.connection.hub.start();
//This is called from your hub
chat.client.doSomething= function (userName) {
alert(userName);
callServerMethod();
};
function callServerMethod() {
$.ajax({
url: '../Controller/Method',
type: 'GET',
global: false,
datatype: 'json',
success: function (data) {
}
}
});
相关文章:
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- 如何从服务器端控制器返回或调用已签名的小程序的方法
- 是否有一种搜索引擎友好的方法可以将服务器端呈现的 HTML 与客户端 MVVM/MVC 框架相结合
- 有没有可能的方法可以在一次ASP按钮单击中同时显示JavaScript和服务器端代码中的消息
- JavaScript 方法或模板字段中的服务器端方法
- SignalR 自定义服务器端方法
- 避免在服务器端路由上使用全局 onBeforeAction 方法
- 服务器端方法未被调用
- 使用string.format,最佳方法和替代方案在服务器端创建javascript函数
- SignalR 2.0 服务器端方法不会被触发
- 如何使用 ajax 调用带有参数(对象)的服务器端方法,其中 url 具有查询参数
- 从嵌套的 jquery 对话框运行服务器端方法
- 有没有一种更快的方法来查找客户端和服务器端的所有图像、音频和视频文件类型
- 调用服务器端从 JavaScript 继承了 C# Web 方法
- 如何将 javascript 变量传递给服务器端方法
- GET() 方法是否安全,以便从服务器端获取安全数据
- 有没有一种方法可以在没有服务器端语言的情况下完成http头请求并获得时间
- 有没有一种方法可以调用某些服务器端代码;新的“;按钮被按下
- 有没有一种方法可以检测'Aw Snap'页面,并向服务器端报告
- 如何从JavaScript(客户端)调用Helper方法(服务器端)