我是SignalR的新手,但是,我已经阅读了许多文档,因此无法正常工作。
我在SignalR中有一个完全正常工作的Hub,它作为控制台应用程序实现。我也有一个客户端作为另一个控制台应用程序工作。但是,我也希望能够从asp.net应用程序向服务器发送消息。
我发送这样的消息:
{ ID: p_key, RequestedFields: p_page.dataIds, RequestedGrids: p_page.grids }
我希望它能正常工作,以便于:
_hub.Invoke("SendMessage", "ExampleMessage").Wait();
它发送一条类似顶部的消息。
客户端应用程序信息:
<asp:button onclick="Signalr_FireEvent"> (Not Real Code)
答案 0 :(得分:3)
假设您的控制台服务器中有一个Hub类,例如:
public class MyHub : Hub
{
public void SendMessage(string message)
{
Console.WriteLine("Incoming message {0}", message);
}
}
您可以通过javascript通过客户端Web应用程序访问服务器:
<form runat="server">
<div>
<input type="button" id="sendmessage" value="Send from javascript" />
<asp:Button ID="Button1" runat="server" Text="Send from code behind" OnClick="Button1_Click" />
</div>
</form>
<!--Script references. -->
<!--Reference the jQuery library. -->
<script src="Scripts/jquery-1.6.4.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.3.0.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="http://localhost:8080/signalr/hubs"></script>
<!--Add script to update the page and send messages.-->
<script type="text/javascript">
$(function () {
//Set the hubs URL for the connection
$.connection.hub.url = "http://localhost:8080/signalr";
// Declare a proxy to reference the hub.
var _hub = $.connection.myHub;
// Start the connection.
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
// Call the SendMessage method on the hub.
_hub.server.sendMessage("$");
});
});
});
</script>
或后面的代码:
protected void Button1_Click(object sender, EventArgs e)
{
//Set the hubs URL for the connection
string url = "http://localhost:8080/signalr";
// Declare a proxy to reference the hub.
var connection = new HubConnection(url);
var _hub = connection.CreateHubProxy("MyHub");
connection.Start().Wait();
_hub.Invoke("SendMessage", "$").Wait();
}
请注意,您需要在Web应用程序中安装以下软件包:
安装软件包Microsoft.AspNet.SignalR.JS
安装软件包Microsoft.AspNet.SignalR.Client
作为完整参考,请阅读我的答案所基于的https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host。