我需要客户端向服务器发送消息,服务器会将消息发送给客户端。
在我将其添加到我正在处理的网络应用程序之前,我正尝试做一个小例子。
我阅读了一些我发现的教程并看到了一些示例,但我仍然无法使其工作。
服务器:
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(TestServer.Startup))]
namespace TestServer
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace TestServer
{
[HubName("ServerHub")]
class ServerHub : Hub
{
public void send(string message)
{
Clients.All.serverUpdate(message);
}
}
}
客户端: 我想在推送来自服务器的消息时更改Label2文本。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainPage.aspx.cs" Inherits="TestClient.MainPage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</div>
</form>
<script src="Scripts/jquery-2.0.3.min.js"></script>
<script src="Scripts/jquery-ui-1.10.3.min.js"></script>
<script src="Scripts/jquery.signalR-2.0.1.min.js"></script>
<script src="/signalr/hubs"></script>
<script>
var hub = $.connection.ServerHub;
hub.client.serverUpdate = function (str) {
$("#Label2").text(str);
};
</script>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Client.Hubs;
using Microsoft.AspNet.SignalR.Client;
namespace TestClient
{
public partial class MainPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var hubConnection = new HubConnection("http://localhost/signalr");
IHubProxy ClientHubProxy = hubConnection.CreateHubProxy("ServerHub");
hubConnection.Start().Wait();
}
protected void Button1_Click(object sender, EventArgs e)
{
ClientHub ch = new ClientHub();
ch.sendUpdate("button clicked");
}
}
}
我是否需要在与Signalr相关的服务器main中添加一些内容?
在客户端,我不确定下一行中要添加什么网址:
var hubConnection = new HubConnection("http://localhost/signalr");
不确定我将消息发送到服务器的方式(按钮点击后)是正确的方式。
答案 0 :(得分:0)
没有内置的hub.client.serverUpdate方法 - 该方法的名称必须与您在集线器上定义的方法的名称(发送)相匹配。请参阅此处的入门教程: