【发布时间】:2015-12-07 17:55:40
【问题描述】:
在我的一个项目中,我需要使用 SignalR 库。所以我决定创建一个简单的应用程序来检查它是如何工作的。我根据一些展示如何编写聊天室的教程创建了这个应用程序。
唯一不同的是,我的项目是 WebForms,而且我也在其中使用了 ASP.NET 控件。
这是我到目前为止所做的:
我安装了
SignalR我创建了
ChatHub文件:
ChatHub.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace SignalRTest
{
public class ChatHub : Hub
{
public void sendMessage(string msg)
{
Clients.All.addMessage(msg);
}
}
}
- 在 Default.aspx 页面中:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.10.2.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.chatHub;
chat.client.addMessage = function (msg) {
$('#chat_list').append("<li>" + msg + "</li>");
};
$.connection.hub.start().done(function () {
$('#Button1').click(function () {
chat.server.sendMessage($('#TextBox1').val());
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Send" />
</div>
<div>
<ul id="chat_list">
</ul>
</div>
</form>
</body>
</html>
- 启动文件:
Startup.cs
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRTest.Startup))]
namespace SignalRTest
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
我设置断点并单击发送按钮会在服务器上触发 sendMessage 方法,并在客户端触发 addMessage JS 函数。但问题来了:
当我向其他用户发送内容时,他可以在<ul></ul> 元素中看到该消息。但不是我。然后当他向我发送回复时,我可以看到它,但他的列表被清除了。
会不会是使用 ASP 控件引起的?
我不确定是否能以最佳方式引用这些控件。
附言。抱歉格式错误,但我无法处理 C# 代码。
【问题讨论】: