Пример #1
0
        public async Task ConnectWebSocket(OnMessageHandler onMessageHandler, OnConnectHandler onConnectHandler = null, OnCloseHandler onCloseHandler = null)
        {
            await Task.Run(async() =>
            {
                if (!Guid.TryParse(wsToken, out _))
                {
                    throw new ArgumentException("tokenの値が不正です, UUID形式で入力してください");
                }

                sakuraioSocket = new ClientWebSocket();
                try
                {
                    await sakuraioSocket.ConnectAsync(new Uri("wss://api.sakura.io/ws/v1/" + wsToken), CancellationToken.None);
                }
                catch (System.Net.WebSockets.WebSocketException)
                {
                    throw new WebSocketException("WebSocketの接続に失敗しました");
                }

                // 特に指定がなければ呼ばない
                onConnectHandler?.Invoke(true);

                while (sakuraioSocket.State == WebSocketState.Open)
                {
                    var buff = new ArraySegment <byte>(new byte[MessageBufferSize]);
                    var ret  = await sakuraioSocket.ReceiveAsync(buff, CancellationToken.None);

                    if (!ret.EndOfMessage)
                    {
                        continue;
                    }

                    var frameString = (new UTF8Encoding()).GetString(buff.Take(ret.Count).ToArray());
                    Console.WriteLine(frameString);

                    var cmsg = DeserializeChannelMessage(frameString);
                    if (cmsg == null)
                    {
                        continue;
                    }

                    onMessageHandler(cmsg);
                }
                onCloseHandler?.Invoke();
            });
        }
Пример #2
0
        public void Connect(ClientID varClientID, string ip, int tcpPort, OnConnectHandler onConnect, OnDisconnectHandler onDisconnect)
        {
            int id = (int)varClientID;

            if (mClientDic.ContainsKey(id))
            {
                Client client = mClientDic[id];
                mClientDic.Remove(id);
                client.Disconnect();
            }

            Client c = new Client();

            c.onConnect    += onConnect;
            c.onDisconnect += onDisconnect;
            c.onDebug      += onDebug;

            c.onMessage += OnMessage;

            c.Connect(ip, tcpPort);

            mClientDic.Add(id, c);
        }
Пример #3
0
 public void SetOnConnectHandler(OnConnectHandler handler)
 {
     this.m_onConnectHandler = handler;
 }