Advertisement
Guest User

Untitled

a guest
Feb 28th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.53 KB | None | 0 0
  1. using System;
  2.  
  3. using WebSocketSharp;
  4. using WebSocketSharp.Frame;
  5.  
  6. using Newtonsoft.Json;
  7.  
  8. using System.Threading;
  9. using System.Collections.Generic;
  10.  
  11. namespace csharpclient
  12. {
  13.     struct Packet
  14.     {
  15.         public string type, nick, password, name, reason;
  16.         public StateObject? obj;
  17.     }
  18.  
  19.     struct StateObject
  20.     {
  21.         public string chat;
  22.         public int img, x, y;
  23.     }
  24.  
  25.     class MainClass
  26.     {
  27.         public static void Main (string[] args)
  28.         {
  29.             string username = "ajf-bot", password = null;
  30.  
  31.             StateObject myState = new StateObject();
  32.             myState.x = 225;
  33.             myState.y = 220;
  34.             myState.img = 0;
  35.             myState.chat = "";
  36.  
  37.             var users = new Dictionary<string, StateObject>();
  38.  
  39.             using (WebSocket ws = new WebSocket("ws://ajf.me:9001/", new string[] { "ponyplace-broadcast" })) {
  40.                 ws.OnOpen += (sender, e) =>
  41.                 {
  42.                     Console.WriteLine ("Connected");
  43.  
  44.                     // say hello
  45.                     Packet packet = new Packet();
  46.                     packet.type = "appear";
  47.                     packet.nick = username;
  48.                     packet.password = password;
  49.                     packet.obj = myState;
  50.  
  51.                     string json = JsonConvert.SerializeObject(packet);
  52.                     Console.WriteLine ("Said hello: " + json);
  53.                     ws.Send(json);
  54.                 };
  55.                 ws.OnMessage += (sender, e) =>
  56.                 {
  57.                     Packet packet = JsonConvert.DeserializeObject<Packet>(e.Data);
  58.  
  59.                     switch (packet.type) {
  60.                     // we got list of rooms
  61.                     case "room_list":
  62.                     {
  63.                         Console.WriteLine ("We got list of rooms.");
  64.  
  65.                         // join room
  66.                         Packet newPacket = new Packet();
  67.                         newPacket.type = "room_change";
  68.                         newPacket.name = "library";
  69.  
  70.                         string json = JsonConvert.SerializeObject(newPacket);
  71.                         Console.WriteLine ("Went to Library: " + json);
  72.                         ws.Send (json);
  73.                         break;
  74.                     }
  75.                     // we joined room
  76.                     case "room_change":
  77.                     {
  78.                         Console.WriteLine ("We changed room.");
  79.  
  80.                         // say hello to peeps
  81.                         myState.chat = "hello I'm a logger bot how do you do?";
  82.  
  83.                         Packet newPacket = new Packet();
  84.                         newPacket.type = "update";
  85.                         newPacket.obj = myState;
  86.  
  87.                         string json = JsonConvert.SerializeObject(newPacket);
  88.                         Console.WriteLine ("Said howdy: " + json);
  89.                         ws.Send (json);
  90.                         break;
  91.                     }
  92.                     // we kicked :<
  93.                     case "kick":
  94.                     {
  95.                         Console.WriteLine ("We got kicked :( reason: " + packet.reason);
  96.                         break;
  97.                     }
  98.                     // someone joined
  99.                     case "appear":
  100.                     {
  101.                         Console.WriteLine (packet.nick + " appeared");
  102.                         users.Add (packet.nick, (StateObject)packet.obj);
  103.                         break;
  104.                     }
  105.                     // someone joined
  106.                     case "die":
  107.                     {
  108.                         Console.WriteLine (packet.nick + " left");
  109.                         users.Remove (packet.nick);
  110.                         break;
  111.                     }
  112.                     // someone updated
  113.                     case "update":
  114.                     {
  115.                         StateObject obj2 = (StateObject)packet.obj;
  116.                         StateObject obj = users[packet.nick];
  117.                         if (obj.x != obj2.x || obj.y != obj2.y) {
  118.                             Console.WriteLine (packet.nick + " moved from (" + obj.x + "," + obj.y + ") to (" + obj2.x + "," + obj2.y + ")");
  119.                         }
  120.                         if (obj.chat != obj2.chat) {
  121.                             Console.WriteLine ("<" + packet.nick + "> " + obj2.chat);
  122.                         }
  123.                         users[packet.nick] = obj2;
  124.                         break;
  125.                     }
  126.                     default:
  127.                     {
  128.                         Console.WriteLine ("Got (unhandled type) message: " + e.Data);
  129.                         break;
  130.                     }
  131.                     }
  132.                 };
  133.                 ws.OnError += (sender, e) =>
  134.                 {
  135.                     Console.WriteLine ("Error! " + e.Message);
  136.                 };
  137.                 ws.OnClose += (sender, e) =>
  138.                 {
  139.                     Console.WriteLine ("Lost connection");
  140.                 };
  141.  
  142.                 ws.Connect();
  143.  
  144.                 while (true)
  145.                 {
  146.                     Thread.Sleep (500);
  147.                 }
  148.             }
  149.         }
  150.     }
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement