SignalR Hubs Windows Form - newbie -
i've built hosted (owin) windows form hub, not acting proxy client, want have small windows form show other clients connect.
the bit im struggling host client "listening" , how log connected machines. want write out message textbox
so here have done far, im running client\hub on same form.
public partial class form1 : form {     private idisposable signalr { get; set; }     private hubconnection hubconnection;     private ihubproxy chat;     const string url = "http://localhost:8080";      public form1()     {         initializecomponent();     }      private void form1_load(object sender, eventargs e)     {         task.run(() => startserver());         //task.run(() => registerserverconnection());     }      private void startserver()     {         try         {             signalr = webapp.start(url);         }         catch (targetinvocationexception)         {          }         this.invoke((action) (() => richtextbox1.appendtext("server running on " + url)));       }      private async void registerserverconnection()     {         hubconnection = new hubconnection(url);         hubconnection.groupstoken = "rooma";          chat = hubconnection.createhubproxy("chat");          int timeout = 10000;         var task = hubconnection.start();         if (await task.whenany(task, task.delay(timeout)) == task)         {             // await chat.invoke<connectionmodel>("clientconnected", connectionmodel);             this.invoke((action)(() => richtextbox1.text+="connected"));             //  this.hide();         }         else         {             this.invoke((action)(() => richtextbox1.appendtext("unable connect.")));         }           chat.invoke<chatmessage>("send", new chatmessage() { msg = "host running", groupname = "host" });     }      private void btngo_click(object sender, eventargs e)     {         registerserverconnection();     }    } [hubname("chat")]     public class chathub : hub     {         public void sendmessage(string message)         {             var msg = string.format(                 "{0}: {1}", context.connectionid, message);             clients.all.newmessage(msg);         }          public override task onconnected()         {             return base.onconnected();         }            public void send(chatmessage message)         {             // call addmessage method on clients                         clients.all.addmessage(message.msg);             clients.group(message.groupname).newmessage("group message " + message.msg);         } } 
this did, may try:
- create arraylist in form1 following structure: connectionid, loginid, serversideencryptedloginpw. 
- during onconnected (when client connected before login), add element arraylist (connectionid, empty, empty). 
- add login function in hub. after client call function, update loginid , encrypted loginpw in arraylist particular connectionid. (check password in database, if have one) 
- during ondisconnected, remove element in arraylist particular connectionid. 
- for other functions in hub, clients must provide loginid , encrypted password. 
- in windows form, shows values in arraylist when changes, e.g. no. of clients connected, no. of clients logined, list of clients' loginid, etc. 
something that!
Comments
Post a Comment