Skip to content

Instantly share code, notes, and snippets.

@DOCHIS
Last active April 16, 2024 09:50
Show Gist options
  • Save DOCHIS/8095eb6a05586de220c81503b4684b36 to your computer and use it in GitHub Desktop.
Save DOCHIS/8095eb6a05586de220c81503b4684b36 to your computer and use it in GitHub Desktop.
ChatServiceType
{
"CLEAR": 0,
"NORMAL": 1,
"FAN": 2,
"SUP": 3,
"FAN_SUP": 4,
"CLEAR2": 0,
"NORMAL2": 16,
"FAN2": 32,
"SUP2": 64,
"TOP_FAN2": 128,
"FOLLOWER2": 256,
}
{
"CLOSED": 0,
"NORMAL": 1,
"KCIK": 2,
"DUMB": 3,
"OVERCHAT": 4,
"BLIND": 5,
"ADMKICK": 6,
}
{
"SVC_KEEPALIVE": 0,
"SVC_LOGIN": 1,
"SVC_JOINCH": 2,
"SVC_QUITCH": 3,
"SVC_CHUSER": 4,
"SVC_CHATMESG": 5,
"SVC_SETCHNAME": 6,
"SVC_SETBJSTAT": 7,
"SVC_SETDUMB": 8,
"SVC_DIRECTCHAT": 9,
"SVC_NOTICE": 10,
"SVC_KICK": 11,
"SVC_SETUSERFLAG": 12,
"SVC_SETSUBBJ": 13,
"SVC_SETNICKNAME": 14,
"SVC_SVRSTAT": 15,
"SVC_RELOADHOST": 16,
"SVC_CLUBCOLOR": 17,
"SVC_SENDBALLOON": 18,
"SVC_ICEMODE": 19,
"SVC_SENDFANLETRTRER": 20,
"SVC_SENDCHEERSONG": 21,
"SVC_BURNINGMODE": 22,
"SVC_BURNINGLEVEL": 23,
"SVC_RELOADBURNLEVEL": 24,
"SVC_BLINDKICK": 25,
"SVC_MANAGERCHAT": 26,
"SVC_APPENDDATA": 27,
"SVC_BASEBALLEVENT": 28,
"SVC_PAIDITEM": 29,
"SVC_TOPFAN": 30,
"SVC_SNSMESSAGE": 31,
"SVC_SNSMODE": 32,
"SVC_SENDBALLOONSUB": 33,
"SVC_SENDFANLETRTRERSUB": 34,
"SVC_TOPFANSUB": 35,
"SVC_BJSTICKERITEM": 36,
"SVC_CHOCOLATE": 37,
"SVC_CHOCOLATESUB": 38,
"SVC_TOPCLAN": 39,
"SVC_TOPCLANSUB": 40,
"SVC_SUPERCHAT": 41,
"SVC_UPDATETICKET": 42,
"SVC_NOTIGAMERANKER": 43,
"SVC_STARCOIN": 44,
"SVC_SENDQUICKVIEW": 45,
"SVC_ITEMSTATUS": 46,
"SVC_ITEMUSING": 47,
"SVC_USEQUICKVIEW": 48,
"SVC_ICEMODERELAY": 49,
"SVC_NOTIFY_POLL": 50,
"SVC_CHATBLOCKMODE": 51,
"SVC_BDM_ADDBLACKINFO": 52,
"SVC_SETBROADINFO": 53,
"SVC_BAN_WORD": 54,
"SVC_SENDHOPEBALLOON": 56,
"SVC_SENDHOPEBALLOONSUB": 57,
"SVC_SENDADMINNOTICE": 58,
"SVC_FREECAT_OWNER_JOIN": 65,
"SVC_BUYGOODS": 70,
"SVC_BUYGOODSSUB": 71,
"SVC_SENDPROMOTION": 72,
"SVC_NOTIFY_VR": 74,
"SVC_NOTIFY_MOBBROAD_PAUSE": 75,
"SVC_KICK_AND_CANCEL": 76,
"SVC_KICK_USERLIST": 77,
"SVC_ADMIN_CHUSER": 78,
"SVC_CLIDOBAEINFO": 79,
"SVC_VOD_BALLOON": 86,
"SVC_ADCON_EFFECT": 87,
"SVC_SVC_KICK_MSG_STATE": 90,
"SVC_FOLLOW_ITEM": 91,
"SVC_ITEM_SELL_EFFECT": 92,
"SVC_FOLLOW_ITEM_EFFECT": 93,
"SVC_TRANSLATION_STATE": 94,
"SVC_TRANSLATION": 95,
"SVC_GIFT_TICKET": 102,
"SVC_VIDEO_BALLOON": 105,
"SVC_VIDEOBALLOON": 105,
"SVC_GLOBAL_STICKER": 108,
"SVC_GLOBAL_STICKER": 109,
"SVC_SENDPUNGBALLOON": 113,
"SVC_SENDPUNGBALLOONSUB": 115,
"SVC_PUNG_NOTICE": 114
}
/**
* 채팅 관련 클래스
* @class
*/
export default class Chatting {
constructor(proccessor) {
// 자주 사용되는 문자열 셋
this.str = {
bk: String.fromCharCode(9), // " "
ff: String.fromCharCode(12), // " "
esc: String.fromCharCode(27), // ""
};
}
/**
* 패킷의 해더를 생성하는 함수
* @param {string} ChatServiceType - 채팅 서비스 타입
* @param {int} byteLength - 버퍼의 길이
* @param {int} n - 미확인
* @return {string} - 패킷의 해더
*/
makeHeader(ChatServiceType, byteLength, n) {
var header = [];
console.log(">> byteLength", byteLength);
return (
header.push(this.str.esc),
header.push(this.str.bk),
header.push(this.padLeft(ChatServiceType, 4)),
header.push(this.padLeft(byteLength, 6)),
header.push(this.padLeft(n, 2)),
header
);
}
/**
* 앞에 0을 채우는 함수
* @param {int} t - 길이
* @param {string} e - 문자열
* @return {string} - 문자열
*/
padLeft(t, e) {
return (t + "").padStart(e, "0");
}
}
{
"ADMIN": 1,
"HIDDEN": 2,
"BJ": 4,
"DUMB": 8,
"GUEST": 16,
"FANCLUB": 32,
"AUTOMANAGER": 64,
"MANAGERLIST": 128,
"MANAGER": 256,
"FEMALE": 512,
"AUTODUMB": 1024,
"DUMB_BLIND": 2048,
"DOBAE_BLIND": 4096,
"DOBAE_BLIND2": 16777216,
"EXITUSER": 8192,
"MOBILE": 16384,
"TOPFAN": 32768,
"REALNAME": 65536,
"NODIRECT": 131072,
"GLOBAL_APP": 262144,
"QUICKVIEW": 524288,
"SPTR_STICKER": 1048576,
"CHROMECAST": 2097152,
"FOLLOWER": 268435456,
"NOTIVODBALLOON": 1073741824,
"NOTITOPFAN": -2147483648,
"GLOBAL_PC": 1,
"CLAN": 2,
"TOPCLAN": 4,
"TOP20": 8,
"GAMEGOD": 16,
"GAMEIMO": 32,
"NOSUPERCHAT": 64,
"NORECVCHAT": 128,
"FLASH": 256,
"LGGAME": 512,
"EMPLOYEE": 1024,
"CLEANATI": 2048,
"POLICE": 4096,
"ADMINCHAT": 8192,
"PC": 16384,
"SPECIFY": 32768,
"NEW_STUDIO": 65536,
"HTML5": 131072,
"FOLLOWER_PERIOD_3": 8388608,
"FOLLOWER_PERIOD_6": 262144,
"FOLLOWER_PERIOD_12": 524288,
"FOLLOWER_PERIOD_24": 1048576,
"FOLLOWER_PERIOD_36": 16777216,
"hide_sex": 33554432
}
@cha2hyun
Copy link

cha2hyun commented Mar 8, 2024

댓글남겨주신 내용을 이제야 자세히 확인했습니다.
와... 근데... 이걸 어떻게 확인하신건가요... 능력자십니다 👍
추가로 혹시 아프리카TV 채팅 내용으로 진행하시는 프로젝트가 있으신건가요?

@DOCHIS
Copy link
Author

DOCHIS commented Mar 8, 2024

@cha2hyun 관련 프로젝트를 진행하면서 소켓의 데이터를 따야하는 상황이 생겨서
아프리카TV내에서 사용하는 서비스 JS코드를 모두 리버싱해서 찾았습니다
https://dochis2013.gitbook.io/afreeca-api/
요 프로젝트를 진행중인데 혹시 아프리카쪽 채팅쪽 프로젝트를 사용하신다면 디스코드에도 놀러오세요!!

@cha2hyun
Copy link

cha2hyun commented Mar 8, 2024

@cha2hyun 관련 프로젝트를 진행하면서 소켓의 데이터를 따야하는 상황이 생겨서 아프리카TV내에서 사용하는 서비스 JS코드를 모두 리버싱해서 찾았습니다 https://dochis2013.gitbook.io/afreeca-api/ 요 프로젝트를 진행중인데 혹시 아프리카쪽 채팅쪽 프로젝트를 사용하신다면 디스코드에도 놀러오세요!!

재밌는 프로젝트 진행중이시네요 !!
그리고 퀄리티에 한번 더 놀랬습니다.

저는 시청자와 실시간 댓글 이벤트를 진행하기 위해서 만들었었는데
현재 아프리카는 시청자가 적어서 유튜브 라이브로만 진행하고 있네요. 😅

글은 좀 예전에 작성해서 지금 보면 부끄러운 부분들이 있지만,
자세히 봐주시고 알게되신 내용도 공유해주셔서 고맙습니다.
남겨주신 댓글과 진행중이신 프로젝트 보고 영감도 얻고 자극도 받게 되는 것 같아요

프로젝트 잘 이끌어주셔서 제2의 아프리카도우미 같은
좋은 서비스 만들어주세요 !! (제가 정말 필요했었던 서비스입니다)

틈틈히 구경하러 가겠습니다 👍

@DOCHIS
Copy link
Author

DOCHIS commented Mar 8, 2024

@cha2hyun 좋은 말씀 감사합니다

아무래도 남겨주신 게시물 덕분에 많은 부분에 대한 힌트를 얻을 수 있었어서 저도 감사합니다
서로 알게 된 사살을 공유하는것도 중요한 덕목인것 같아요

즐거운 하루되세요 👍

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