In diesem Artikel wird hauptsächlich das HTML5-WebSocket-Implementierungs-Chatroom-Beispiel vorgestellt, das einen gewissen Referenzwert hat.
Die Methode zum Implementieren eines Chatrooms auf einer herkömmlichen Webseite besteht darin, denFunktion
Ein einfacher Chatroom hat hauptsächlich die folgenden Funktionen:1) Registrierung
Die Registrierung muss mehrere Dinge erledigen, darunter das Erhalten einer Liste aller Benutzer des aktuellen Servers nach Abschluss der Registrierung und das Senden der aktuell erfolgreich registrierten Benutzer an andere Online-Benutzer durch den Dienst.2) Eine Nachricht senden
Der Server sendet die aktuell empfangene Nachricht online an andere Benutzer3) Beenden
Der Server benachrichtigt andere Benutzer über den getrennten BenutzerDie Funktionsvorschau des Chatrooms ist wie folgt: Der serverseitige Code muss nur einige Methoden für mehrere Funktionen definieren, nämlich Registrierung, Gewinnung anderer Benutzer und Senden von Informationen. Der spezifische Code lautet wie folgt:/// <summary> /// Copyright © henryfan 2012 ///Email: henryfan@msn.com ///HomePage: http://www.php.cn/ ///CreateTime: 2012/12/7 21:45:25 /// </summary> class Handler { public long Register(string name) { TcpChannel channel = MethodContext.Current.Channel; Console.WriteLine("{0} register name:{1}", channel.EndPoint, name); channel.Name = name; JsonMessage msg = new JsonMessage(); User user = new User(); user.Name = name; user.ID = channel.ClientID; user.IP = channel.EndPoint.ToString(); channel.Tag = user; msg.type = "register"; msg.data = user; foreach (TcpChannel item in channel.Server.GetOnlines()) { if (item != channel) item.Send(msg); } return channel.ClientID; } public IList<User> List() { TcpChannel channel = MethodContext.Current.Channel; IList<User> result = new List<User>(); foreach (TcpChannel item in channel.Server.GetOnlines()) { if (item != channel) result.Add((User)item.Tag); } return result; } public void Say(string Content) { TcpChannel channel = MethodContext.Current.Channel; JsonMessage msg = new JsonMessage(); SayText st = new SayText(); st.Name = channel.Name; st.ID = channel.ClientID; st.Date = DateTime.Now; st.Content = Content; st.IP = channel.EndPoint.ToString(); msg.type = "say"; msg.data = st; foreach (TcpChannel item in channel.Server.GetOnlines()) { item.Send(msg); } } }
protected override void OnDisposed(object sender, ChannelDisposedEventArgs e) { base.OnDisposed(sender, e); Console.WriteLine("{0} disposed", e.Channel.EndPoint); JsonMessage msg = new JsonMessage(); User user = new User(); user.Name = e.Channel.Name; user.ID = e.Channel.ClientID; user.IP = e.Channel.EndPoint.ToString(); msg.type = "unregister"; msg.data = (User)e.Channel.Tag; foreach (TcpChannel item in this.Server.GetOnlines()) { if (item != e.Channel) item.Send(msg); } }
JavaScriptCode
Das erste, was Sie für den HTML5-Code tun müssen, ist die Verbindung zum Server. Der relevante Javascript-Code lautet wie folgt:function connect() { channel = new TcpChannel(); channel.Connected = function (evt) { callRegister.parameters.name = $('#nikename').val(); channel.Send(callRegister, function (result) { if (result.status == null || result.status == undefined) { $('#dlgConnect').dialog('close'); registerid = result.data; list(); } }); }; channel.Disposed = function (evt) { $('#dlgConnect').dialog('open'); }; channel.Error = function (evt) { alert(evt); }; channel.Receive = function (result) { if (result.type == "register") { var item = getUser(result.data); $(item).appendTo($('#lstOnlines')); } else if (result.type == 'unregister') { $('#user_' + result.data.ID).remove(); } else if (result.type == 'say') { addSayItem(result.data); } else { } } channel.Connect($('#host').val()); }
jquery werden die oben genannten Ereignisse sehr einfach.
BenutzerregistrierungAufrufprozess:
var callRegister = { url: 'Handler.Register', parameters: { name: ''} }; function register() { $('#frmRegister').form('submit', { onSubmit: function () { var isValid = $(this).form('validate'); if (isValid) { connect(); } return false; } }); }
var callList = { url: 'Handler.List', parameters: {} }; function list() { channel.Send(callList, function (result) { $('#lstOnlines').html(''); for (var i = 0; i < result.data.length; i++) { var item = getUser(result.data[i]); $(item).appendTo($('#lstOnlines')); } }); }
var callSay = { url: 'Handler.Say', parameters: {Content:""} } function Say() { callSay.parameters.Content = mEditor.html(); mEditor.html(''); channel.Send(callSay); $('#content1')[0].focus(); }
Zusammenfassung
Das obige ist der detaillierte Inhalt vonCodebeispiel für die HTML5-WebSocket-Chatroom-Implementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!