Vfinity2.0 α
นักพัฒนา

บริดจ์ TikTok กำหนดเอง

เชื่อมต่อ Vfinity เข้ากับตัวเชื่อมต่อ TikTok LIVE ที่คุณรันด้วยตัวเอง แทนการใช้บริดจ์ในตัว

โดยปกติแล้ว Vfinity จะเริ่มตัวช่วย TikTok ของตัวเองขึ้นมาเมื่อคุณสั่งเชื่อมต่อ แต่หากคุณใช้งานตัวเชื่อมต่ออื่นอยู่แล้ว เช่น TikFinity หรือตัวเชื่อมต่อที่คุณเขียนขึ้นเอง Vfinity สามารถรับฟังอีเวนต์ TikTok LIVE จาก WebSocket ของโปรแกรมนั้นแทนได้

บริดจ์ในตัว (Vfinity)

เริ่มทำงานพร้อมกับ Vfinity และสื่อสารกันเป็นการภายในโดยไม่ต้องเปิดพอร์ต สามารถเข้าร่วมไลฟ์ใหม่เมื่อสัญญาณหลุด รอจนกว่าไลฟ์จะเริ่ม และรายงานบทบาทของผู้ชมแต่ละคนได้

WebSocket กำหนดเอง (TikFinity หรืออื่น ๆ)

เชื่อมต่อไปยังเซิร์ฟเวอร์ WebSocket ที่คุณเปิดทำงานไว้ Vfinity จะอ่านอีเวนต์ตามที่โปรแกรมนั้นส่งมา และตัวเชื่อมต่อของคุณจะเป็นผู้ตัดสินใจว่าจะเข้าร่วมไลฟ์อย่างไรและเมื่อใด

อีเวนต์ การแจ้งเตือน การขว้าง เป้าหมาย และลีดเดอร์บอร์ดของคุณจะทำงานได้เหมือนเดิมในทั้งสองรูปแบบ โดย Twitch, Kick และ YouTube จะไม่ได้รับผลกระทบจากการเลือกนี้

สลับไปใช้ตัวเชื่อมต่อของคุณ

ตัดการเชื่อมต่อ TikTok ก่อน

ประเภทการเชื่อมต่อจะถูกล็อคไว้ขณะที่ TikTok เชื่อมต่ออยู่ ให้คลิก ตัดการเชื่อมต่อ บนการ์ด TikTok LIVE ใน การตั้งค่าการเชื่อมต่อ ก่อน

เลือก WebSocket กำหนดเอง

ในการ์ดเดียวกัน เปิดส่วน การเชื่อมต่อ TikTok ขั้นสูง แล้วเปลี่ยน ประเภทการเชื่อมต่อ เป็น WebSocket กำหนดเอง (TikFinity หรืออื่น ๆ)

ระบุที่อยู่ของตัวเชื่อมต่อ

กรอก โฮสต์ WebSocket และ พอร์ต WebSocket ให้ตรงกับตัวเชื่อมต่อของคุณ โดย Vfinity จะตั้งค่าเริ่มต้นไว้ที่ localhost และ 21213

เชื่อมต่อ

เปิดตัวเชื่อมต่อของคุณให้พร้อมทำงาน จากนั้นคลิก เชื่อมต่อกับ LIVE Vfinity จะเชื่อมต่อไปยัง ws://host:port และนับว่าเข้าร่วมห้องสำเร็จทันทีที่ซ็อกเก็ตเปิดทำงาน

การ์ด TikTok LIVE ใน การตั้งค่า › การเชื่อมต่อ ใช้ระบุชื่อผู้ใช้ และเลือกประเภทการเชื่อมต่อได้ในการเชื่อมต่อ TikTok ขั้นสูง

ตัวช่วยในตัวของ Vfinity ไม่ได้เปิดพอร์ตใด ๆ ของตัวเอง ดังนั้นจึงไม่มีส่วนใดใน Vfinity ที่จะไปแย่งใช้งานพอร์ตกับตัวเชื่อมต่อของคุณ

สิ่งที่ Vfinity ส่งไปยังตัวเชื่อมต่อของคุณ

หากมีการกรอกช่อง ชื่อผู้ใช้ TikTok ไว้ Vfinity จะส่งคำขอให้ตัวเชื่อมต่อของคุณเข้าร่วมห้องไลฟ์นั้นทันทีที่ซ็อกเก็ตเปิด:

{ "command": "connect", "username": "yourname" }

หากตัวเชื่อมต่อของคุณทราบอยู่แล้วว่าจะต้องอ่านไลฟ์ห้องใด ให้เว้นช่องชื่อผู้ใช้ว่างไว้

การคลิก รีเฟรชรายการของขวัญ จะส่งข้อความ {"command":"getGifts"} ตอบกลับด้วยข้อความ giftList โดยมี data เป็นรายการของขวัญ ซึ่งแต่ละชิ้นมี id, name, diamondCount และ imageUrl

สิ่งที่ตัวเชื่อมต่อของคุณส่งมา

ส่งออบเจกต์ JSON หนึ่งออบเจกต์ต่อหนึ่งข้อความ โดยระบุชื่ออีเวนต์และข้อมูล:

{
  "event": "gift",
  "data": {
    "uniqueId": "mika_22",
    "nickname": "Mika",
    "profilePictureUrl": "https://example.com/mika.jpg",
    "giftId": 5655,
    "giftName": "Rose",
    "diamondCount": 1,
    "repeatCount": 5,
    "giftType": 1,
    "repeatEnd": true
  }
}

สามารถใช้ type แทนคำว่า event ได้ และข้อความที่ไม่มีคีย์ data จะถูกอ่านเป็นเนื้อหาข้อมูลโดยตรง ตัวเลขสามารถส่งมาเป็นข้อความตัวเลข (Numeric string) ได้เช่นกัน ตามรูปแบบที่ TikTok ส่งตัวนับขนาดใหญ่

eventฟิลด์ที่ Vfinity อ่านค่า
giftข้อมูลผู้ชม, giftId, giftName, diamondCount, repeatCount, giftType, repeatEnd, giftPictureUrl
chatข้อมูลผู้ชม, comment
likeข้อมูลผู้ชม, likeCount, totalLikeCount
follow, shareข้อมูลผู้ชม
subscribeข้อมูลผู้ชม, subMonth, gifted
questionข้อมูลผู้ชม, questionText
envelopeข้อมูลผู้ชม, coins, people
roomUserviewerCount
roomStatsfollowerCount, viewerCount, totalLikeCount, title

นอกจากนี้ยังรองรับ member, social, emote, superFan, battle และ goalUpdate ในโครงสร้างเดียวกับที่บริดจ์ในตัวของ Vfinity ใช้งาน หากส่งชื่ออีเวนต์ที่ไม่รู้จักมา ระบบจะละเว้นข้อความนั้นไป

ข้อมูลผู้ชม

ทุกอีเวนต์ของผู้ชมจะขึ้นต้นด้วยฟิลด์เดียวกัน: uniqueId (ชื่อ @handle), nickname และส่ง userId กับ profilePictureUrl มาเพิ่มเติมได้ ผู้ชมที่ไม่มี uniqueId จะแสดงเป็น "unknown"

เพื่อให้กฎเกณฑ์ด้านบทบาททำงานได้ ให้แนบออบเจกต์ roles โดยมีฟิลด์ isModerator, isSubscriber, isSuperFan, isFollower และ isOwner เป็นค่าบูลีนจริง/เท็จ และส่ง followRole, gifterLevel หรือ teamMemberLevel เป็นตัวเลข หากไม่ทราบข้อมูลใดให้เว้นฟิลด์นั้นไว้ บทบาทที่ขาดหายไปจะถือว่าไม่ทราบข้อมูล (unknown) ไม่ได้ถือว่าเป็นเท็จ และกฎที่ต้องใช้บทบาทนั้นจะไม่ผ่าน

คอมโบของขวัญ

TikTok จะส่งข้อมูลของขวัญแบบคอมโบ (giftType 1) ซ้ำ ๆ หลายครั้งขณะที่ผู้ชมกำลังกดรัว ให้ส่งการอัปเดตเหล่านั้นพร้อมระบุ repeatEnd: false แล้วส่งข้อความสุดท้ายพร้อมระบุ repeatEnd: true Vfinity จะตอบสนองเฉพาะข้อความสุดท้ายเท่านั้น ทำให้คอมโบกุหลาบ 5 ดอกนับเป็นกุหลาบ 5 ดอกเพียงครั้งเดียว หากไม่มี giftType หรือ repeatEnd แต่ละข้อความจะถูกนับแยกเป็นของขวัญชิ้นใหม่เสมอ

ของขวัญจากตัวเชื่อมต่อของคุณจะเดินทางผ่านเส้นทางเดียวกับของขวัญทั่วไป: จับคู่กับอีเวนต์ โมเดลตอบสนอง และการแจ้งเตือนปรากฏ

ทดสอบด้วยเซิร์ฟเวอร์ขนาดเล็ก

เซิร์ฟเวอร์ Node.js ตัวอย่างนี้ทำหน้าที่จำลองเป็นตัวเชื่อมต่อ โดยจะพิมพ์ข้อความที่ Vfinity ส่งมา และตอบกลับด้วยข้อความแชตและคอมโบกุหลาบ

// npm install ws
const { WebSocketServer } = require('ws');

const server = new WebSocketServer({ port: 21213 });

server.on('connection', (socket) => {
  socket.on('message', (raw) => console.log('Vfinity says', raw.toString()));

  const viewer = { uniqueId: 'testviewer', nickname: 'Test Viewer' };
  socket.send(JSON.stringify({ event: 'chat', data: { ...viewer, comment: 'hello' } }));
  socket.send(JSON.stringify({
    event: 'gift',
    data: { ...viewer, giftId: 5655, giftName: 'Rose', diamondCount: 1,
            repeatCount: 5, giftType: 1, repeatEnd: true },
  }));
});

เมื่อสั่งรัน และเชื่อมต่อ Vfinity เข้ากับ localhost และ 21213 อีเวนต์ทั้งสองรายการจะปรากฏขึ้นในบันทึกอีเวนต์บนแดชบอร์ดทันที

ฟังก์ชันที่ต้องใช้บริดจ์ในตัว

เข้าร่วม LIVE ใหม่โดยอัตโนมัติ และ รอให้ LIVE เริ่มต้น เป็นฟังก์ชันเฉพาะของบริดจ์ในตัว เมื่อใช้ตัวเชื่อมต่อแบบกำหนดเอง การ์ดจะแจ้งให้ทราบ และคำสั่ง tiktok.connect ของ Local API จะละเว้นตัวเลือกเหล่านี้ การจัดการเชื่อมต่อใหม่กับ TikTok จะขึ้นอยู่กับตัวเชื่อมต่อของคุณเอง

หากการเชื่อมต่อล้มเหลวหรือหมดเวลา ให้ตรวจสอบว่าตัวเชื่อมต่อของคุณกำลังทำงานและรับฟังอยู่บนโฮสต์และพอร์ตที่คุณระบุ Vfinity จะยกเลิกความพยายามหากไม่สามารถเชื่อมต่อได้ภายใน 10 วินาที

อ่านเพิ่มเติม