Ich versuche, eine einfache Chat-Anwendung zu Lernzwecken zu ändern. Die einzige Änderung, die ich machte, war, eine Schaltfläche zu einem serverseitigen Steuerelement zu ändern. Das Problem, das ich habe, ist, dass das erste Mal, dass ich eine Nachricht ausstrahle, es funktioniert, und die Clients.addNotification (msg) aufgerufen wird. Aber das zweite Mal, obwohl das Javascript funktioniert, im letzten Schritt, das Javascript macht alle Änderungen rückgängig und die Clients.addNotification (..) wird nie aufgerufen:/Es funktioniert nur zum ersten Mal! Ich muss mein Projekt neu erstellen, um zu sehen, wieder zu arbeiten (eine Aktualisierung der Seite wird nicht funktionieren)Einfaches Chat-Anwendungssignal r
public class Chat : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.addNotification(message);
}
}
Meine aspx Seite:
<%@ 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>
Mein Code hinter:
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);
}
}
Einmal In diesem Beispiel werde ich den Code in eine andere Anwendung verschieben, an der ich arbeite, damit Benachrichtigungen sofort an alle Clients gesendet werden können.
Ich bin ein sehr Anfänger und ich würde alle Ihre Hilfe zu schätzen wissen! Vielen Dank, Jungs!
EDIT:
, wenn der Netzwerk-Registerkarte Check-out (auf meinem Chrom), für den ersten Klick ich eine ‚Senden‘ erhalten (signalR) und Client1.aspx und alles funktioniert gut, zum zweiten Klick weiter, ich bekomme nur Client1.aspx und keine gesandten:/
Kein Problem @Test :) – redsquare