我是一名C#算法程序员,试图集成SignalR
,以便我可以在长时间运行的代码上发送进度消息。
以下简单原型失败
helloConnection.sayHelloToAll("Hello all!");
JavaScript错误"对象不支持属性......"虽然右键单击helloConnection
。清楚地显示了该方法。我找到的此消息的类似实例都不适用于我的示例。
请有人帮忙:我花了几周的时间试图让这项工作成功。这是客户。它位于我的母版页面中,因为我的消息将放在标题上。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
<link href="Styles/SiteBlue.css" rel="stylesheet" e="text/css" />
<title> Seeker-Home Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>
<script src="Scripts/json2.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.js"></script>
<script src="SignalR/Hubs"></script>
<script type="text/javascript">
$(); //document ready
var helloConnection = $.connection.seekerHub;
helloConnection.client.sayHelloToMe = function (message) {
alert(message);
};
$.connection.hub.start().done(function () {
helloConnection.sayHelloToAll("Hello all!");
});
function displayPopup() {
alert("Hello, world.");
};
</script>
这是集线器
using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
namespace SignalR
{
public class SeekerHub : Hub
{
public void SayHelloToAll(string message)
{
Clients.All.sayHelloToMe(message);
var callingClient = Context.ConnectionId;
}
}
}
提前感谢您提供的任何帮助。
答案 0 :(得分:2)
问题是您尝试从客户端调用客户端方法sayHelloToMe
。
替换这行代码:
helloConnection.client.sayHelloToMe = function (message) {
alert(message);
};
用这个:
helloConnection.on('sayHelloToMe ', function(message) {
alert(message);
});
这样你实际上在客户端有一个处理程序,听取服务器端的触发器为sayHelloToMe
答案 1 :(得分:0)
您可以在集线器中覆盖OnConnected
以查看您的客户端是否连接到服务器
public override Task OnConnected()
{
}
https://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.hub.onconnected(v=vs.118).aspx