AsyncCallback verständniss problem C#

Gast #5283196
Lesenswert?

hi,

ich habe hier einen kleinen "WebSocket" in C#.

Momentan ist es so, wenn eine Nachricht einkommt, schreibt die Server 
Klasse mir eine Zeile in die Console.

Allerdings möchte ich in meinem Hauptprogramm mit der Nachricht 
"weiterarbeiten"... deshalb brauch ich "sowas wie" AsyncCallback...

unten hänge ich den Server mit an:


die Problematik (bei meinem Verständnissproblem) ist dass die 
Erklärungen immer davon ausgehen, dass der Thread so Konzipiert ist, 
dass irgendwo ein Callback ensteht ... oder ich sitze einfach nur mega 
auf dem Schlauch...
> einen kleinen Ansatz habe ich bereits angefangen, aber genau hier komme ich dann 
nicht mehr weiter.

also hier erzeug ich einen neuen Server:
> Server myServer = new Server();

und hier bekomme ich vom Server ne Nachricht
1
        private void NewMsg(WebSocketSession session, string message)
2
        {
3

4
            // <-- hier soll der die Nachricht Zurücgegeben werden...
5

6
            Console.WriteLine("Client said: " + message);
7
            //Send the received message back
8
            session.Send("Server responded back: " + message);
9
        }

evtl. kann man mir das besser veranschaulichen...

10001 Dank für jeden Tipp
1
namespace TCP_ServerV1
2
{
3

4
    class Program
5
    {
6

7
        static void Main(string[] args)
8
        {
9

10

11

12
            Task task1 = Run();
13

14

15
            AsyncCallback callBack = new AsyncCallback(Ausgabe);
16

17

18

19
            Console.ReadKey();
20
            Console.ReadKey();
21
            Console.ReadKey();
22
            Console.ReadKey();
23
        }
24

25
        public static async Task Run()
26
        {
27
            await Task.Run(() =>
28
            {
29
                Server myServer = new Server();
30

31
                Console.WriteLine("Sende eine Nachricht: ");
32
                string msg = Console.ReadLine();
33
                myServer.Send(msg);
34
                Console.WriteLine("Nachricht gesendet :) ");
35
            });
36
        }
37

38
        static void Ausgabe(IAsyncResult result)
39
        {
40
            Console.WriteLine("incomming Message from Server");
41

42
            Console.WriteLine(result);
43

44
        }
45

46

47

48

49
    }
50

51

52
    class Server
53
    {
54
        private WebSocketServer appServer;
55

56
        public Server()
57
        {
58
            appServer = new WebSocketServer();
59

60
            appServer.Setup(8080);
61

62
            appServer.NewSessionConnected += new SessionHandler<WebSocketSession>(NewSession);
63
            appServer.SessionClosed += new SessionHandler<WebSocketSession, CloseReason>(ClosedSession);
64
            appServer.NewMessageReceived += new SessionHandler<WebSocketSession, string>(NewMsg);
65

66
            appServer.Start();
67
        }
68

69
        ~Server()
70
        {
71
            appServer.Stop();
72
        }
73

74
        private void NewMsg(WebSocketSession session, string message)
75
        {
76

77
            // <-- hier soll der die Nachricht Zurücgegeben werden...
78

79
            Console.WriteLine("Client said: " + message);
80
            //Send the received message back
81
            session.Send("Server responded back: " + message);
82
        }
83

84
        private void NewSession(WebSocketSession session)
85
        {
86
            Console.WriteLine();
87
            Console.WriteLine("New session connected! Sessions counter: " + appServer.SessionCount);
88
            session.Send("Hello new client!");
89
        }
90

91
        private void ClosedSession(WebSocketSession session, CloseReason value)
92
        {
93
            Console.WriteLine();
94
            Console.WriteLine("Client disconnected! Sessions counter: " + appServer.SessionCount);
95
        }
96

97
        public void Send(string msg)
98
        {
99
            foreach (WebSocketSession session in appServer.GetAllSessions())
100
            {
101
                session.Send(msg);
102
            }
103
        }
104

105
    }
106
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren