Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

구조 변경 및 아이디어 제안 #2

Open
refracta opened this issue Nov 12, 2022 · 1 comment
Open

구조 변경 및 아이디어 제안 #2

refracta opened this issue Nov 12, 2022 · 1 comment
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@refracta
Copy link

refracta commented Nov 12, 2022

안녕하세요 좋은 라이브러리 개발해주셔서 잘 사용하고 있습니다.

다만 사용간에 불편한 점을 몇가지 발견하여 의견 남깁니다.

  1. TCP 연결 지원
    일부 네트워크 환경에서는 UDP 데이터그램의 수신이 불가하거나, 제한되는 경우가 많습니다.
    그리고 전송해야 하는 데이터가 영상 스트리밍과 같이 실시간성과 비신뢰성의 특징을 가지기보다는
    메시지 이벤트 전송이라는 신뢰성이 필요한 쪽에 더 가깝고, UDP로 얻을 수 있는 시간상 이익이 TCP보다 크지 않기 때문에
    TCP 소켓 서버로 구현하는 것이 더 좋을 것 같습니다.
    또한 이 경우 메신저봇 코드쪽에서 전송 실패한 메시지들을 큐에 가지고 있다가. 일정 시간 간격으로 재전송하는 로직을 추가하여 메시지 유실에 대한 보완도 가능해 보입니다.

  2. 메신저봇 코드 간소화
    메신저봇의 구조를 잘 알지는 못하지만 아마 자바에 내장된 자바스크립트 엔진(Nashorn, Rhino)이나 자바 기반 스크립트 엔진(Rhino)을 사용하는 것으로 생각됩니다.
    따라서 자바 API에 접근이 전부 되는 것 같은데 이 점을 이용해서 GitHub의 Raw source를 HTTP Get으로 로딩한 뒤 eval하는 방식을 사용하면 업데이트의 편의성도 챙기고, 메신저봇측 코드를 간소화할 수 있을 것 같습니다.

  3. GitHub wiki 또는 README.md에 메신저봇 코드 가이드 포함
    외부 사이트(네이버 카페 등)을 이용하지 않고 이 Repository에서 개발에 관한 모든 정보를 얻을 수 있으면 좋겠습니다.

  4. reply 외의 메시지 전송 수단 추가
    보통 메신저 봇(Discord, IRC, Telegram 등의 봇)의 용례는 명령에 대한 응답만 있는 것이 아니라, 봇이 외부 데이터 소스에서 발생한 이벤트 등을 먼저 제공해주는 방식도 존재합니다. 이런 봇을 만들기 위한 지원이 부족합니다.
    예를 들어 봇이 꺼졌다가 재시작된 경우, 이전의 채팅방을 기억하여 먼저 메시지를 보내는 것이 보통의 방법으로는 가능하지 않습니다.
    저는 Message를 serialize/deserialize 하는 커스텀 로직을 만들어서 해결할 수 있었는데, 라이브러리 단에서 조금 더 깔끔한 방법으로 지원했으면 좋겠습니다.

  • 메시지를 직렬화 가능하게 만드는 방법
  • {room, address, port}를 Info 클래스로 모델링하고 server 클래스에서 server.send(info:Info, msg:string)과 같은 메소드를 만드는 방법
    위와 같은 방법들이 있을 것 같습니다.
  1. JSDoc 지원
    구조에 대한 설명이 조금 더 자세했으면 좋겠습니다. 추가적으로 server.on('ready', ) 이벤트에 대한 설명이 README.md 등에 추가되면 좋을 것 같습니다.
@krrrr0
Copy link

krrrr0 commented Nov 14, 2022

+1

@dn1t dn1t self-assigned this Feb 6, 2023
@dn1t dn1t added documentation Improvements or additions to documentation enhancement New feature or request labels Feb 6, 2023
@dn1t dn1t pinned this issue Mar 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants