예제 #1
0
        public async void UnregisterAccount(string address)
        {
            int count;
            var publicKey = NanoUtils.AddressToPublicKeyHexString(address);

            if (registeredAccounts.TryGetValue(publicKey, out count))
            {
                registeredAccounts[publicKey]--;
            }
            else
            {
                registeredAccounts.Remove(publicKey);
                if (websocket == null || websocket.State != WebSocketState.Open)
                {
                    return;
                }

                AccountRegisterRequest request = new AccountRegisterRequest();
                request.account = address;
                request.action  = "unregister_account";

                await websocket.SendText(JsonUtility.ToJson(request));
            }
        }
예제 #2
0
        public async void RegisterAccount(String address)
        {
            int count;
            var publicKey = NanoUtils.AddressToPublicKeyHexString(address);

            if (registeredAccounts.TryGetValue(publicKey, out count))
            {
                registeredAccounts[publicKey]++;
            }
            else
            {
                registeredAccounts[publicKey] = 1;
                if (websocket == null || websocket.State != WebSocketState.Open)
                {
                    // Don't send if we're not connected.
                    return;
                }

                AccountRegisterRequest request = new AccountRegisterRequest();
                request.account = address;
                request.action  = "register_account";
                await websocket.SendText(JsonUtility.ToJson(request));
            }
        }
예제 #3
0
        // Start is called before the first frame update
        async void Start()
        {
            websocket = new WebSocket(url);

            websocket.OnOpen += async() =>
            {
                Debug.Log("Connection open!");

                if (isListeningAll)
                {
                    ListenAll();
                }

                foreach (var registeredAccount in registeredAccounts)
                {
                    AccountRegisterRequest request = new AccountRegisterRequest
                    {
                        account = NanoUtils.PublicKeyToAddress(registeredAccount.Key),
                        action  = "register_account"
                    };
                    await websocket.SendText(JsonUtility.ToJson(request));
                }

                foreach (var del in openDelegates)
                {
                    del(false, isReconnection);
                }
            };

            websocket.OnError += (e) =>
            {
                foreach (var del in openDelegates)
                {
                    del(true, isReconnection);
                }
                Debug.Log("Error! " + e);
            };

            websocket.OnClose += (e) =>
            {
                Debug.Log("Connection closed!");
            };

            websocket.OnMessage += (bytes) =>
            {
                var json = System.Text.Encoding.UTF8.GetString(bytes);

                // Confirmation
                var websocketConfirmationResponseData = JsonUtility.FromJson <WebsocketConfirmationResponseData>(json);

                if (websocketConfirmationResponseData.is_filtered)
                {
                    foreach (var del in filteredConfirmationDelegates)
                    {
                        del(websocketConfirmationResponseData);
                    }
                }
                else
                {
                    foreach (var del in confirmationDelegates)
                    {
                        del(websocketConfirmationResponseData);
                    }
                }

                Debug.Log("Received OnMessage! (" + bytes.Length + " bytes) " + json);
            };

            await websocket.Connect();
        }