Skip to content

When websocket is processing messages, the keyup signal will take effect. #453

Open

Description

@JackDan9

When websocket is processing messages, the keyup signal will take effect. The logs and code are as follows:

if (process.platform !== "darwin") {
    const RIGHT_ALT_KEYCODE = 3640;
    let holding = false; // 是否正按住

    if (!iohook.listenerCount('keydown')) {
      iohook.on('keydown', (evt) => {
        // 建议只判断 RIGHT_ALT 的 keycode
        if (evt.keycode === RIGHT_ALT_KEYCODE && !holding) {
          console.log("keydown keyboardStatus holding: ", keyboardStatus, holding);
          holding = true;
          if (keyboardStatus.recordVoice.disabled) return;
          emitter.emit("recordVoice", "recordHold", true);
        }
      });

      iohook.on('keyup', (evt) => {
        if (evt.keycode === RIGHT_ALT_KEYCODE && holding) {
          console.log("keyup keyboardStatus holding: ", keyboardStatus, holding);
          holding = false;
          emitter.emit("recordVoice", "recordHold", false);
        }
      });

      iohook.start();
    }
  }

log

keydown keyboardStatus: { recordVoice: { disabled: false } }
[16:58:00.599 ]: record status { mode: 'hold', running: false }
[16:58:00.601 ]: start
[16:58:00.764 ]: getEnv NODE_ENV development false
[16:58:00.812 (ws:asr)]: connected
[16:58:00.813 ]: call connect
[16:58:00.814 (ws:asr)]: send config
[16:58:00.815 (ws:asr)]: send instruction
[16:58:00.816 ]: wait start instruction 2b0e0156-0835-4a2e-86e7-05d3bf82da61
[16:58:00.824 (ws:asr)]: data:
[16:58:00.825 (ws:asr)]: dataJson:
[16:58:00.826 (ws:asr)]: data:
[16:58:00.827 (ws:asr)]: dataJson:
[16:58:00.845 ]: wait end instruction 2b0e0156-0835-4a2e-86e7-05d3bf82da61
[16:58:02.134 (ws:asr)]: send audio_frame
[16:58:02.155 (ws:asr)]: data:
[16:58:02.156 (ws:asr)]: dataJson:
[16:58:03.213 (ws:asr)]: send audio_frame
[16:58:03.227 (ws:asr)]: data:
[16:58:03.228 (ws:asr)]: dataJson:
[16:58:03.612 (ws:asr)]: data:
[16:58:03.613 (ws:asr)]: dataJson:
[16:58:04.293 (ws:asr)]: send audio_frame
[16:58:04.305 (ws:asr)]: data:
[16:58:04.306 (ws:asr)]: dataJson:
[16:58:05.372 (ws:asr)]: send audio_frame
[16:58:05.387 (ws:asr)]: data:
[16:58:05.388 (ws:asr)]: dataJson:
[16:58:05.692 (ws:asr)]: data:
[16:58:05.693 (ws:asr)]: dataJson:
[16:58:06.453 (ws:asr)]: send audio_frame
[16:58:06.465 (ws:asr)]: data:
[16:58:06.466 (ws:asr)]: dataJson:
[16:58:06.801 (ws:asr)]: data:
[16:58:06.802 (ws:asr)]: dataJson:
[16:58:07.534 (ws:asr)]: send audio_frame
[16:58:07.546 (ws:asr)]: data:
[16:58:07.547 (ws:asr)]: dataJson:
[16:58:08.613 (ws:asr)]: send audio_frame
[16:58:08.626 (ws:asr)]: data:
[16:58:08.627 (ws:asr)]: dataJson:
[16:58:09.694 (ws:asr)]: send audio_frame
[16:58:09.706 (ws:asr)]: data:
[16:58:09.706 (ws:asr)]: dataJson:
[16:58:10.773 (ws:asr)]: send audio_frame
[16:58:10.786 (ws:asr)]: data:
[16:58:10.787 (ws:asr)]: dataJson:
[16:58:11.854 (ws:asr)]: send audio_frame
[16:58:11.866 (ws:asr)]: data:
[16:58:11.867 (ws:asr)]: dataJson:
[16:58:12.933 (ws:asr)]: send audio_frame
[16:58:12.945 (ws:asr)]: data:
[16:58:12.946 (ws:asr)]: dataJson:
[16:58:14.013 (ws:asr)]: send audio_frame
[16:58:14.026 (ws:asr)]: data:
[16:58:14.027 (ws:asr)]: dataJson:
[16:58:15.093 (ws:asr)]: send audio_frame
[16:58:15.106 (ws:asr)]: data:
[16:58:15.107 (ws:asr)]: dataJson:
[16:58:16.173 (ws:asr)]: send audio_frame
[16:58:16.186 (ws:asr)]: data:
[16:58:16.187 (ws:asr)]: dataJson:
[16:58:17.254 (ws:asr)]: send audio_frame
[16:58:17.266 (ws:asr)]: data:
[16:58:17.267 (ws:asr)]: dataJson:
[16:58:18.333 (ws:asr)]: send audio_frame

I would like to ask about the reason. Thank you very much.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions