32KB PubNub 메시지에는 몇 개의 문자가 들어갈 수 있나요?

PubNub Developer Relations - Feb 21 - - Dev Community

PubNub 메시지의 최대 길이는 32KB입니다( PubNub SDK 문서PubNub 소프트 및 하드 제한 참조). 32KB를 초과하면 메시지가 전달되지 않습니다. 그렇다면 메시지에서 32KB는 실제로 어떤 모습일까요? IoT 기반 솔루션을 구축하는 경우 메시지 크기에 대해 크게 걱정하지 않으셔도 됩니다. 지리적 위치에 필요한 경도 및 위도, 임베디드 시스템의 온도 또는 센서 데이터, 조명이나 기타 스마트 기기를 제어하기 위한 짧은 지침과 같은 짧은 업데이트 정보만 전송할 가능성이 높습니다. 마찬가지로 실시간 대규모 온라인 게임의 리더보드도 32KB에 쉽게 들어갑니다. 그러나 단일 PubNub 메시지에 더 많은 정보가 필요한 사용 사례도 많이 있습니다. 채팅 메시지나 코그너티브 서비스의 분석을 생각해 보세요. 이 글에서는 채팅 메시지를 예로 들어보겠습니다.

수학을 해봅시다

페이로드의 총 크기를 파악하려면 먼저 채팅 메시지가 어떻게 생겼는지 정의해야 합니다. 계산에 사용할 채팅 메시지에는 채널, '사이드 채널' 정보, 실제 텍스트 자체 등 전체 페이로드가 포함됩니다. PubNub에서 패키징하면 타임스탬프(타임토큰)와 라우팅에 필요한 기타 제어 정보를 포함한 봉투 정보도 포함됩니다. 클라이언트에서 게시하는 메시지는 다음과 같이 보일 수 있습니다:

var channel = "doc_patient_comms_a";
var message = {
    "name" : "Dr. Blackwell",
    "company" : "Sunnydale Memorial",
    "uuid" : "uuid-string",
    "text" : "Your test results are back and everything looks normal."
};
Enter fullscreen mode Exit fullscreen mode

메시지 크기를 계산하려면 채널 이름과 메시지 페이로드(JSON) 문자열을 결합하고 결과를 URI 인코딩한 다음(Javascript의 encodeURIComponent) 메시지 길이(Javascript의 String.length)를 확인합니다. 그런 다음 PubNub 봉투(메타데이터) 정보를 고려하여 결과에 100을 더하는 것이 가장 좋은 방법입니다. 전체 자바스크립트 함수와 70개 이상의 지원되는 다른 SDK 중 하나에 맞게 함수를 구성하는 방법에 대한 아이디어는 지원 문서를 참조하세요.

예제

이제 메시지 크기를 계산하는 방법을 알았으니, 과거 텍스트와 PubNub 메시지로 전송할 수 있는 잠재적 텍스트를 살펴보며 PubNub API의 기능을 살펴봅시다. 예를 들어, 토머스 제퍼슨의 독립 선언문은 다음과 같은 방식으로 PubNub 메시지로 인코딩할 수 있습니다:.

var channel = "continental_congress_declaration_subcommittee";
var message = {
    "name" : "Mr. Jefferson",
    "uuid" : "4f4ec1b4-4957-4125-9103-c6edcfe37770",
    "text" : "The unanimous Declaration of the thirteen united States of America, When in the Course of human events[…]our sacred Honor."
};
Enter fullscreen mode Exit fullscreen mode

메시지 콘텐츠에 JSON 객체를 사용하면 이 메시지는 11.4KB로 계산됩니다. 따라서 제퍼슨은 하나의 PubNub 메시지로 두 개의 선언문 사본을 전송할 수 있으며, 이는 250ms 미만의 최소 지연 시간으로 글로벌 데이터를 전송하는 PubNub API의 효율성을 보여줍니다.

또 다른 예로 프로젝트 구텐베르크의 작품인 Don Berry의 "Routine for a Hornet"을 생각해 보세요. PubNub의 메시지 지속성 기능을 사용하면 이 단편 소설의 상당 부분을 인코딩할 수 있습니다:

var channel = "worlds_of_science_fiction_editors";
var message = {
    "name" : "Don Berry",
    "uuid" : "99c8361f-ac61-47f5-9b5f-22095227e6e3",
    "text" : "ROUTINE for a HORNET[…]in any case."
};
Enter fullscreen mode Exit fullscreen mode

하나의 페이로드로 "공상 과학 소설의 세계"에 나오는 이 단편 소설의 약 85%를 보낼 수 있지만, "...어떤 경우에도 그는 조종 장치에서 손을 뗄 수 없었다"라는 절벽에서 멈추고 나머지는 두 번째 메시지로 보내야 합니다. 그러나 각 메시지가 50-250ms 후에 도착하므로 잠시 기다릴 수 있습니다. 영국 고블린: 웨일스 민속, 요정 신화, 전설 및 전통 Sikes의 책입니다. 이 책은 긴 책입니다(파일 크기 773kB). 누군가 이 책을 보내려면 여러 조각으로 나눠서 보내야 합니다. 제 테스트에서는 각 책의 각 챕터가 페이로드를 가득 채웠습니다. 예를 들어 "책 1 요정의 영역, 1장 - 동화와 고대 신화..."는 그 자체로 23KB입니다. 페어리랜드에 대해 알아야 할 것이 많습니다.

var channel = "british_goblin_researchers";
var message = {
    "name" : "Sikes",
    "uuid" : "8044e839-a3b2-4bab-b2d1-c52897299cf5",
    "text" : "BOOK I.[…]'Welsh Melodies.'"
};
Enter fullscreen mode Exit fullscreen mode

모범 사례

지금까지 살펴본 바와 같이 32KB는 적당한 텍스트 양입니다. 그러나 모든 사용자 생성 메시지의 크기를 테스트하는 것이 가장 좋습니다. 너무 큰 경우 지원 문서 "PubNub로 대용량 메시지를 보낼 수 있나요?"에 조정 방법에 대한 몇 가지 제안이 있습니다. 또한 메시지를 암호화하면 30%가 추가될 수 있고 더블바이트 언어로 작성된 메시지는 더 많은 공간을 차지하므로 이에 따라 계획하세요. 프로 팁: 메시지 크기를 1.5KB로 유지하면 하나의 TCP 패킷에 들어갈 수 있습니다. 이미지는 어떤가요? 이미지는 Base-64로 변환하여 전송할 수 있습니다. 이러한 변환은 상당한 오버헤드를 추가하므로 다시 한 번 시스템을 테스트해 보세요. 아이디어를 얻으려면 DIY Snapchat 클론 데모 프로젝트를 확인하세요. 마지막으로 250ms란 무엇인가요? 250밀리초는 이 문장을 읽는 데 걸리는 시간보다 짧은 시간입니다. 전 세계 15개 지점과 특허받은 실시간 아키텍처를 갖춘 PubNub는 페이로드를 빠르게 전송합니다.

마지막 생각

새 프로젝트를 시작하기 전에 모든 기술적 질문에 답하려고 시도하고 싶을 수 있습니다. PubNub SDK의 장점은 정답이 하나만 있는 경우가 거의 없다는 것입니다. 블로그에 많은 예제가 있으니 막막한 점이 있으면 언제든지 문의해 주세요 - 여러분의 성공을 기원합니다. 무언가를 만들어서 오픈소스로 공개하고 싶으시다면 개발자 지원팀에 문의해 주세요.

이 블로그의 PubNub 메시지

var channel = "my_channel";
var message = {
    "name" : "Mark Williams",
    "uuid" : "d75dace8-1f15-4b8e-80a3-646ad97b58de",
    "text" : "The maximum length […] we would love to see it."
};
Enter fullscreen mode Exit fullscreen mode

이 블로그 게시물은 10.5k

시작하기

지금 바로 PubNub을 시작하세요! PubNub 계정에 가입 하고 키세트를 확인하여 게시 키와 구독 키를 받은 후 다음을 포함하여 PubNub에서 제공하는 모든 것을 확인하세요:

  1. 게시: 텍스트 업데이트, 이모티콘 반응, 전송된 파일, 기타 복잡한 메타데이터 등 사용자 입력이 업데이트될 때마다 메시지를 전송하세요. 메타데이터.

  2. 구독: 새 메시지를 수신하여 사용자 화면을 새로 고칩니다.

  3. 프레즌스: 사용자의 온라인 상태를 업데이트하고 감지합니다.

  4. 메시지 지속성: 사용자가 앱에 로그인하면 수신된 모든 메시지를 표시하거나 프로젝트 및 문서 수정본을 추적합니다.

  5. 모바일 푸시 알림: 앱에서 떨어져 있는 모바일 사용자에게 채팅 메시지, 프로젝트 업데이트 또는 애플리케이션 업데이트에 대해 알립니다.

  6. 앱 컨텍스트: 데이터베이스를 설정하거나 호출하지 않고도 사용자에 대한 정보를 한 곳에 저장하세요.

  7. 액세스 관리자: 특정 사용자의 비공개 대화, 채널룸, 문서, 프로젝트에 대한 액세스를 제한하세요.

  8. 기능: 메시지 번역, 부적절한 메시지 검열, 새 사용자 도착 알림, 다른 사용자에게 멘션 알림 등의 기능을 제공합니다.

  9. 이벤트 및 작업: 애플리케이션 에코시스템의 이벤트를 중앙에서 관리하고 코드 없이 비즈니스 로직을 트리거할 수 있습니다.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .