ประสิทธิภาพที่เพิ่มขึ้นมาจากการบัฟเฟอร์แพ็กเก็ตก่อนส่ง ซึ่งในที่สุดก็ส่งเป็นชุดแทนแต่ละแพ็คเกจ ยิ่งมีการประมวลผลการรับส่งข้อมูลมากเท่าใด การปรับปรุงก็จะยิ่งดีขึ้นเท่านั้น มีการเสนอกลยุทธ์มากมายเป็นกิจวัตร คุณสามารถอ่านเพิ่มเติมเกี่ยวกับอัลกอริธึมการบัฟเฟอร์แพ็กเก็ตได้ที่นี่
ติดตั้งแพ็คเกจหลัก
npm install kalm
ติดตั้งเลเยอร์การขนส่ง (เช่น 'tcp')
npm install @kalm/tcp
เซิร์ฟเวอร์
const kalm = require ( 'kalm' ) ;
const ws = require ( '@kalm/ws' ) ;
const server = kalm . listen ( {
port : 8800 ,
transport : ws ( ) ,
routine : kalm . routines . tick ( { hz : 5 } ) , // Sends packets at a frequency of 5 Hz (200ms)
host : '0.0.0.0' ,
} ) ;
server . on ( 'connection' , ( client ) => {
client . subscribe ( 'my-channel' , ( body , frame ) => {
// Handle messages here
} ) ;
server . broadcast ( 'my-other-channel' , 'some message' ) ;
} ) ;
ลูกค้า
const kalm = require ( 'kalm' ) ;
const ws = require ( '@kalm/ws' ) ;
const client = kalm . connect ( {
host : '0.0.0.0' ,
port : 8800 ,
transport : ws ( ) ,
routine : kalm . routines . realtime ( ) ,
} ) ;
client . on ( 'connect' , ( ) => {
client . subscribe ( 'my-other-channel' , ( body , frame ) => {
// Handle messages here
} ) ;
client . write ( 'my-channel' , 'hello world' ) ;
} ) ;
หากต้องการดูการใช้งาน โปรดดูโฟลเดอร์ตัวอย่างของเรา
[อ่านเพิ่มเติม]
Kalm ใช้ตัวแปรสภาพแวดล้อม NODE_DEBUG
เพียงรวม kalm
ไว้ในคุณค่าของคุณ
ตัวอย่าง:
NODE_DEBUG=net,kalm node myApp.js
Kalm เสนอเหตุการณ์ให้ติดตามเมื่อแพ็กเก็ตถูกประมวลผลโดยรูทีนหรือเมื่อได้รับเฟรมดิบ
เหตุการณ์ | เพย์โหลด | คำอธิบาย |
---|---|---|
error | ข้อผิดพลาด | (เซิร์ฟเวอร์ ไคลเอนต์) ปล่อยเมื่อมีข้อผิดพลาด |
ready | เป็นโมฆะ | (เซิร์ฟเวอร์) บ่งชี้ว่าขณะนี้เซิร์ฟเวอร์กำลังรับฟังการเชื่อมต่อใหม่อยู่ |
connection | ลูกค้า | (เซิร์ฟเวอร์) บ่งชี้ว่าไคลเอนต์เชื่อมต่อสำเร็จแล้ว |
connect | ลูกค้า | (ไคลเอนต์) บ่งชี้ว่าไคลเอนต์เชื่อมต่อสำเร็จแล้ว |
disconnect | เป็นโมฆะ | (ไคลเอนต์) บ่งชี้ว่าไคลเอนต์ได้ยกเลิกการเชื่อมต่อ |
frame | RawFrame | (ไคลเอนต์) ทริกเกอร์เมื่อได้รับแบบเต็มเฟรมที่แยกวิเคราะห์ |
npm test
npm run bench
หากคุณนึกถึงสิ่งที่คุณต้องการ เปิดประเด็นหรือยื่นคำขอ เรายินดีอย่างยิ่งที่จะตรวจสอบ!
โครงการนี้เกิดขึ้นได้ต้องขอบคุณทุกคนที่มีส่วนร่วม [มีส่วนช่วย].
ร่วมเป็นผู้บริจาคทางการเงินและช่วยเรารักษาชุมชนของเรา [มีส่วนช่วย]
สนับสนุนโครงการนี้กับองค์กรของคุณ โลโก้ของคุณจะแสดงที่นี่พร้อมลิงก์ไปยังเว็บไซต์ของคุณ [มีส่วนช่วย]
Apache 2.0 (c) 2023 เฟรเดริก ชาเรตต์