Я пытаюсь изменить приложение для чата в учебных целях.Единственным изменением, которое я сделал, было изменение кнопки на серверный элемент управления.У меня проблема в том, что в первый раз, когда я передаю сообщение, оно работает, и вызывается Clients.addNotification (msg).Тем не менее, во второй раз, хотя javascript работает, на последнем этапе javascript отменяет все изменения, и Clients.addNotification (..) никогда не вызывается: / Он работает только в первый раз!Я должен перестроить свой проект, чтобы он снова заработал (обновление страницы не будет работать)
public class Chat : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.addNotification(message);
}
}
Моя страница aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Client1.aspx.cs" Inherits="WebApplication1.WorkingWithHubs.Client1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="../Scripts/jquery-1.6.4.js" type="text/javascript"></script>
<script src="../Scripts/jquery.signalR.min.js" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
// Proxy created on the fly
var chat = $.connection.chat;
// Declare a function on the chat hub so the server can invoke it
chat.addNotification = function (message) {
$('#messages').append('<li>' + message + '</li>');
var labelValue = $('#total').val();
$('#total').val(parseInt(labelValue, 10) + 1);
};
$("#btn").click(function () {
// Call the chat method on the server
chat.send($('#msg').val());
});
// Start the connection
$.connection.hub.start();
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scriptManager" runat="server" />
<div>
<asp:UpdatePanel ID="updatePanel" runat="server">
<ContentTemplate>
<input type="text" id="msg" runat="server" />
<asp:Button ID="btn" runat="server" Text="BroadCast" OnClick="btn_click" ClientIDMode="static" />
<input type="text" id="total" value="0" />
<ul id="messages">
</ul>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
Мой код:
public partial class Client1 : System.Web.UI.Page
{
public List<String> list = new List<String>();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btn_click(object sender, EventArgs e)
{
list.Add(msg.Value);
}
}
Как только этот пример сработает, я перенесу код в другое приложение, над которым я работаю, чтобы уведомления могли быть немедленно отправлены всем клиентам.
Я очень новичок и буду признателен за вашу помощь!Большое спасибо, ребята!
РЕДАКТИРОВАТЬ:
при проверке вкладки сети (на моем Chrome), за первый щелчок я получаю 'send' (signalR) и Client1.aspx и всеработает нормально, для второго клика вперед, я получаю только Client1.aspx, и не отправлять вообще: /