c.pmh.codes

the chatsolution.shutupandtakemy.codes client


이게 뭐죠?

c.pmh.codes는 F12에서 채팅을 할 수 있는 플러그인 기반의 스크립트 모음입니다.


어떻게 쓰나요?

아무 사이트나 상관 없습니다. F12 콘솔을 키고 다음을 입력하세요:

import('//c.pmh.codes')

수 초 이내에 채팅창에 연결되며 메시지를 보내거나 받을 수 있습니다!


자동으로 로딩된 core.jsbasic.js 플러그인 덕분에 다음 함수로 쉽게 채팅을 보낼 수 있습니다:

chat`보내고 싶은 메시지`

플러그인?

c.pmh.codes의 채팅 서버는 단 14줄로 메시지를 전송하는 매우 간단한 기능만 존재합니다.


그럼에도 플러그인 기능을 통해 서버를 짧게 유지하면서도 이미지 보내기, 암호화된 채팅 보내기, 메시지 알림 받기 등 많은 것을 할 수 있습니다.


플러그인 리스트를 보려면 loader.js 플러그인이 작동하고 있을때 (맨 처음 import문을 작동시키면 자동으로 불러와집니다!) 다음과 같이 입력해보세요:

plist``

플러그인을 GUI로 관리할 수 있는 pgui 플러그인을 불러와보세요 (pguiKanghyun Kimdialogutils 플러그인을 통해 Taehyun Lim이 제작하였습니다!):

pload`pgui`

다음 함수를 통해 GUI를 실행시킬 수 있습니다:

pgui``

모든 플러그인을 불러오려면 다음과 같이 입력하세요:

pload`*`

나도 플러그인 만들래요

플러그인을 만드는 법에는 규칙이 없습니다! 이미 만들어져있는 플러그인들을 보고 아무렇게나 만든 후 다음과 같이 불러와보세요:

import('//정적.호스팅한.도메인/플러그인명.js')

plist, pload에 등록하고 싶다면 여기를 수정하고 Pull request를 보내주세요!


원리를 자세히 알려주세요

c.pmh.codes는 다음과 같이 동작합니다.


  1. import('//c.pmh.codes')를 실행하면 loader.js가 실행됩니다.
  2. loader.js는 플러그인 목록을 관리하고, core.jsbasic.js를 실행합니다.
  3. core.jswss://chatsolution.shutupandtakemy.codes에 웹 소켓 연결을 진행합니다. 또한 통신을 수신 받는 함수와 송신하는 함수를 window.__core 객체를 통해 다른 플러그인에게 공개합니다.
  4. basic.jscore.js에서 받은 window.__core 객체를 받아 chat`내용` 함수와 author`닉네임` 등 기본적인 함수를 사용자에게 제공하고 들어온 메시지를 출력합니다.
  5. 여러분이 alias 플러그인을 사용하기 위해 pload`alias`를 실행했다고 가정합시다.
  6. loader.js는 사용자의 플러그인 사용 명령을 받으면 plugins.json을 보고 alias.js가 필요로 하는 다른 플러그인이 무엇인지 알아본 후 alias.js를 실행시킵니다.
  7. alias.jsbasic.js가 가지고 있는 함수 chat, author 등을 c, a 등으로 재할당합니다.
  8. 플러그인 중 *utils로 끝나는 플러그인은 다른 플러그인에서 자주 쓰이는 함수를 모아둔 것입니다. (예를 들어 dialogutils 는 F12 콘솔이 아닌 HTML에 메시지를 띄울때 자주 사용되는 함수 모음입니다.)

이 프로젝트의 목표 1순위는 확장성입니다. 서버를 최대한 건들지 않은 상태로 플러그인들이 잘 결합할 수 있도록 하고자 합니다.


자주 물어보는 질문


마지막으로...

이 프로젝트는 Minhyeok Park이 시작했으며 지금까지 3명의 기여자가 있습니다.

그냥 사용하는것 보다 플러그인을 만들며 기여하는 것이 더 재미있을껍니다. 기여의 힘을 보여주세요.