예제 #1
0
        static void Main(string[] args)
        {
            var host = "localhost";
            var port = 4099;

            Console.WriteLine("<Please enter the name...>");
            var name = Console.ReadLine();

            var client = new ChatRoomClient(host, port);

            client.Receive += (sender, eventArgs) =>
            {
                Console.WriteLine($"{eventArgs.Message.Name} sad: {eventArgs.Message.Text}");
            };
            client.Connect();

            client.SendName(name);

            Console.WriteLine("輸入字串可以送出訊息");

            while (true)
            {
                var text = Console.ReadLine();
                client.SendMessage(text);

                Console.WriteLine($"訊息: {text} 已送出!");
            }
        }
예제 #2
0
 public RoomList(ChatRoomClient loginSession, Action ShowMenuPage, Action <AvailableRoom> JoinRoomCommand, Action UpdateListSize)
 {
     this.UpdateListSize  = UpdateListSize;
     this.JoinRoomCommand = JoinRoomCommand;
     this.ShowMenuPage    = ShowMenuPage;
     this.loginSession    = loginSession;
     InitializeComponent();
     addedUIElements = new List <UIElement>();
 }
예제 #3
0
        public Register(ChatRoomClient client, Action ShowLoginPage, Action ShowMenuPage)
        {
            this.ShowLoginPage = ShowLoginPage;
            this.ShowMenuPage  = ShowMenuPage;
            InitializeComponent();

            this.KeyDown += new KeyEventHandler(KeyPressHandler);
            this.client   = client;
        }
예제 #4
0
        public Login(ChatRoomClient client, Action ShowRegisterScreen, Action ShowMenuPage)
        {
            this.client             = client;
            this.ShowMenuPage       = ShowMenuPage;
            this.ShowRegisterScreen = ShowRegisterScreen;
            InitializeComponent();

            UpdateLoginInfo();

            this.KeyDown += new KeyEventHandler(KeyPressHandler);
        }
예제 #5
0
        public override Object execute(TransferObject baseto)
        {
            StandardTransferObject to = (StandardTransferObject)baseto;
            String calleeMethod       = to.getCalleeMethod();

            if (calleeMethod.Equals("receiveMessage"))
            {
                String message = to.getString("message");
                ChatRoomClient.getInstance().receiveMessage(message);
            }

            return(null);
        }
예제 #6
0
        public async Task Test_EnterAsync_FailedToEnterToRoom()
        {
            // Arrange
            var roomNumber = 8181;

            using var socket = new ClientWebSocket();

            // Act
            var chatRoomClient = await ChatRoomClient.EnterAsync(roomNumber, socket, CancellationToken.None);

            // Assert
            // Fails to enter because there is no open chat room
            Assert.That(chatRoomClient.IsFailure, Is.EqualTo(true));
        }
예제 #7
0
    public void Connect(string host, int port, string name)
    {
        m_Client = new ChatRoomClient(host, port);

        m_Client.Connect();

        var syncContext = SynchronizationContext.Current;

        m_ClientReceiveEventSubscribe = Observable.FromEventPattern <ChatMessageEventArgs>(
            h => m_Client.Receive    += h,
            h => m_Client.Receive    -= h)
                                        .Subscribe(e =>
        {
            syncContext.Post(state => Receive?.Invoke(this, e.EventArgs), null);
        });

        m_Client.SendName(name);
    }
예제 #8
0
    public static void StartChatServer()
    {
        tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPEndPoint ipep = new IPEndPoint(IPAddress.Any, GAME_PORT);

        tcpServer.Bind(ipep);
        Debug.Log("服务器开启...");
        tcpServer.Listen(100);
        //循环,每连接一个客户端建立一个CharRoomClient对象
        chatServerThread = new Thread(() => {
            while (true)
            {
                Socket clientSocket   = tcpServer.Accept();               //暂停等待客户端连接,连接后执行后面的代码
                ChatRoomClient client = new ChatRoomClient(clientSocket); //连接后,客户端与服务器的操作封装到ChatRoomClient类中
                clientList.Add(client);
            }
        });
        MainUI.destroyDelegate         += AbortChatServer;
        RoomWindow.roomDestroyDelegate += AbortChatServer;
        chatServerThread.Start();
    }