Korat
ฟีเจอร์

แชทฟรี ส่งข้อความเสียง ส่งไฟล์ และโทรหากันในเบราว์เซอร์

แชทออนไลน์ของ Korat แคบโดยตั้งใจ คือคนสองคนต่อหนึ่งห้องสนทนา ส่วนเรื่องอื่นในแอปทั้งหมด ทั้งโต๊ะอาหารที่มีคนชวน โพสต์ที่มีคนแชร์มา หรือคู่ที่แมตช์กันจาก Dating จะเข้ามาอยู่ในห้องนั้นในรูปการ์ดที่กดใช้งานต่อได้เลย

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

แชทออนไลน์ สองคน หนึ่งห้องสนทนา

แชทตรงของ Korat เป็นแบบตัวต่อตัวเท่านั้น ห้องหนึ่งมีสองคนพอดี และเพิ่มคนที่สามเข้าไปไม่ได้ การคุยกันหลายคนเกิดขึ้นในอีกสองที่ ซึ่งทั้งสองที่ไม่ใช่ตัวแชทนี้ อย่างแรกคือกลุ่ม ที่การคุยกันเป็นโพสต์ โพสต์หนึ่งโพสต์พกไอดีของกลุ่มติดตัวไป แล้วได้คอมเมนต์ การแท็ก และการแจ้งเตือนมาจากกลไกเดียวกับฟีดปกติ คือเป็นเธรด ค้นย้อนหลังได้ อยู่ถาวร อย่างที่สองคือห้องย่อยที่กลุ่มและสโมสรกีฬามีได้ — ห้องข้อความแบบช่องสนทนา (Discord-style) ที่อยู่ในหน้ากลุ่ม ซึ่งเป็นคนละระบบกับแชทตรง อยู่บนตารางคนละใบ ผังสิทธิ์คนละผัง และทำได้น้อยกว่าแชทตรงอย่างมีนัยสำคัญ ข้อจำกัดทั้งหมดเขียนไว้ข้างล่างนี้ เพราะห้องที่หน้าตาเหมือนแชทแต่ไม่ใช่แชท แย่กว่าการไม่มีห้องเลย

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

ส่งรูป ไฟล์ ข้อความเสียง และตำแหน่งที่อยู่

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

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

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

โทรเสียงและโทรวิดีโอ หลังปลดล็อกทั้งสองฝ่าย

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

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

ข้อจำกัดสองข้อที่ขอพูดตรงๆ แชทตรงเป็นแบบตัวต่อตัวเท่านั้น เปลี่ยนห้องคู่ให้กลายเป็นห้องกลุ่มไม่ได้ และไม่มีแชทตัวนี้ในเวอร์ชันหลายคน สิ่งที่มีคือห้องย่อยของกลุ่มและสโมสร ซึ่งเป็นระบบที่บางกว่ามากและอยู่บนตารางคนละใบ คือข้อความตัวอักษรล้วน ส่งได้ ลบของตัวเองได้ แต่แก้ไขข้อความไม่ได้ ตอบกลับเจาะข้อความไม่ได้ กดปฏิกิริยาไม่ได้ แนบรูป ไฟล์ หรือข้อความเสียงไม่ได้ และโทรจากในห้องไม่ได้ อย่าอ่านสิ่งที่หน้านี้เขียนไว้ว่าเป็นความสามารถของห้องย่อย

การโทรไม่ได้เข้ารหัสแบบ end-to-end และเราไม่มีเซิร์ฟเวอร์ TURN สื่อวิ่งแบบ peer-to-peer เฉพาะเมื่อเครือข่ายสองฝั่งต่อถึงกันตรงๆได้ แต่เมื่อไม่มีตัวรีเลย์ เครือข่ายมือถือบางเจ้ารวมกับ NAT ที่เข้มงวดก็เชื่อมต่อไม่สำเร็จเลย ถ้าโทรแล้วสายไม่ติด สาเหตุมักเป็นเรื่องนี้ และเป็นโครงสร้างพื้นฐานที่เรายังไม่ได้ตั้งขึ้นมา ไม่ใช่บั๊กในแอป

สถานะออนไลน์ แปลว่าเห็นตัวใน 90 วินาที

จุดสีเขียวใน Korat หมายถึงสิ่งเดียวที่เจาะจงมาก คือเครื่องของคนนั้นเขียนเวลา last_seen ไว้ภายในเก้าสิบวินาทีที่ผ่านมา มันคือการถามเป็นรอบๆ ไม่ใช่การเชื่อมต่อซ็อกเก็ตค้างไว้ จึงกินแบตน้อยและหยาบ คนที่ปิดแอปไปสี่สิบวินาทีแล้วยังดูเหมือนออนไลน์อยู่ ส่วนคนที่อยู่ในอุโมงค์ก็ดับไปทั้งที่ยังไม่ได้ไปไหน

เราเรียกมันว่าชีพจรแทนคำว่าออนไลน์ เพราะสถานะออนไลน์คือฟีเจอร์ที่คนมักอ่านว่าเป็นหลักฐาน หลักฐานว่าข้อความถูกเห็นแล้ว หลักฐานว่าอีกฝ่ายกำลังเมิน หน้าต่างการถามทุกเก้าสิบวินาทีรับน้ำหนักขนาดนั้นไม่ไหว

ค้นหาห้องแชทออนไลน์ที่อยากคุยให้เจอ

มีสองฟีเจอร์ที่ทำงานหนักที่สุดในการทำให้ลิสต์แชทยาวๆยังใช้ได้อยู่ อย่างแรกคือชื่อเล่นของแชท (alias) เปลี่ยนชื่อห้องไหนก็ได้ให้เป็นชื่อที่คุณเรียกคนนั้นจริงๆ แล้วชื่อใหม่จะเห็นแค่คุณคนเดียว มันไม่รั่วออกไปที่ฟีด ที่กลุ่ม ที่คอมเมนต์ หรือบนโปรไฟล์ของเขา คนที่คุณบันทึกไว้ว่า “เจ้าของหอ” จะยังแสดงชื่อจริงที่เขาตั้งเองอยู่ทุกที่ ชื่อทุกที่ใน Korat ถูกดึงสดจากโปรไฟล์ ก็เพื่อไม่ให้การเปลี่ยนชื่อที่หนึ่งไปเพี้ยนกับอีกที่หนึ่ง

อย่างที่สองคือป้ายกำกับ (labels) เป็นแท็กสีที่คุณสร้างเอง เลือกเองว่าห้องไหนอยู่ป้ายไหน สร้าง แก้ไข และลบได้ครบ มันทำหน้าที่เป็นตัวกรองบนลิสต์แชทไปในตัว วางอยู่ข้างตัวกรองที่มีมาให้อยู่แล้วอย่างยังไม่อ่าน บัญชีทางการ และห้องที่มาจาก Dating ส่วนการค้นหาจะไล่ทั้งชื่อแชทและข้อความล่าสุด แค่จำประโยคได้ครึ่งเดียวก็หาห้องเจอ แชทปักหมุดขึ้นบนสุดได้ กดเป็นอ่านแล้วได้ หรือลบทิ้งก็ได้

เซิร์ฟเวอร์เห็นอะไรบ้าง และคุณทำอะไรกับใครได้บ้าง

ข้อความถูกเก็บไว้ฝั่งเซิร์ฟเวอร์เป็นข้อความธรรมดา ป้องกันด้วยนโยบาย row-level security ที่จำกัดแถวของห้องสนทนาไว้เฉพาะสองคนที่อยู่ในห้องนั้น ไม่มีการเข้ารหัสแบบ end-to-end ของแชท การโทร หรือไฟล์ ที่ไหนเลยใน Korat และไม่มีการเข้ารหัสระดับแอปพลิเคชันขณะจัดเก็บนอกเหนือจากที่ฐานข้อมูลแบบ managed ให้มา ถ้าเรื่องที่คุณจะคุยต้องการสิ่งนั้น กรุณาใช้เครื่องมือที่สร้างมาเพื่อการนั้น คำอธิบายที่ตรงกับความจริงของโมเดลภัยคุกคามมีประโยชน์กับคุณมากกว่าคำปลอบใจสวยๆ

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

คำถามที่พบบ่อย

Korat มีแชทกลุ่มไหม

ตัวแชทไม่มี ห้องแชทตรงเป็นแบบตัวต่อตัวและเพิ่มคนที่สามไม่ได้ การคุยกันหลายคนเกิดขึ้นในกลุ่ม ทั้งในรูปของโพสต์ที่พกไอดีของกลุ่มไปด้วยและรองรับคอมเมนต์ การแท็ก @ และการแจ้งเตือน และในรูปของห้องย่อยของกลุ่ม คือห้องข้อความแบบช่องสนทนาที่อยู่ในหน้ากลุ่ม ซึ่งสโมสรกีฬาก็มีเหมือนกัน

ห้องย่อยเป็นคนละระบบกับแชทตรงและทำได้น้อยกว่ามาก คือข้อความตัวอักษรล้วน ส่งและลบได้ แต่แก้ไขไม่ได้ ตอบกลับเจาะข้อความไม่ได้ กดปฏิกิริยาไม่ได้ แนบไฟล์หรือส่งข้อความเสียงไม่ได้ และโทรไม่ได้

นี่คือข้อจำกัดจริง ไม่ใช่สถานะชั่วคราวที่เราเล่าให้ฟังดูดี

ข้อความใน Korat เข้ารหัสแบบ end-to-end หรือเปล่า

ไม่ ข้อความ ไฟล์ และการโทร ไม่ได้เข้ารหัสแบบ end-to-end แถวข้อมูลของแชทถูกเก็บไว้ฝั่งเซิร์ฟเวอร์และป้องกันด้วยนโยบาย row-level security ที่จำกัดแต่ละห้องไว้เฉพาะสองคนในห้อง

ไม่มีการเข้ารหัสระดับแอปพลิเคชันขณะจัดเก็บนอกเหนือจากที่ฐานข้อมูลแบบ managed ให้มา

ทำไมไม่เห็นปุ่มโทรในห้องแชท

การยินยอมให้โทรเป็นแบบสองฝ่ายและแยกตามห้องสนทนา ปุ่มโทรเสียงและวิดีโอจะโผล่ก็ต่อเมื่อทั้งสองคนปลดล็อกการโทรในห้องนั้นแล้ว

การปลดล็อกให้คนหนึ่งไม่ได้ปลดล็อกให้คนอื่นด้วย

โทรวิดีโอแล้วสายไม่ติด เกิดอะไรขึ้น

เรายังไม่มีเซิร์ฟเวอร์รีเลย์ TURN การโทรจึงต้องอาศัยว่าเครื่องสองเครื่องต่อถึงกันตรงๆได้ เครือข่ายมือถือบางแบบรวมกับ NAT ที่เข้มงวดทำแบบนั้นไม่ได้ สายจึงเชื่อมต่อไม่สำเร็จ

ถ้าทั้งสองเครื่องอยู่บน Wi-Fi วงเดียวกัน หรืออยู่บนเครือข่ายที่ยอมให้ต่อตรงถึงกัน ปกติจะใช้งานได้

ถ้าเปลี่ยนชื่อแชท อีกฝ่ายเห็นชื่อใหม่ไหม

ไม่เห็น ชื่อเล่นของแชทเป็นของคุณคนเดียว ชื่อที่อีกฝ่ายตั้งไว้จริงยังแสดงให้ทุกคนเห็นเหมือนเดิม ทั้งในฟีด ในคอมเมนต์ และในกลุ่ม

ชื่อทุกที่ใน Korat ถูกดึงสดจากโปรไฟล์ ชื่อเล่นจึงรั่วเข้าไปในเนื้อหาไม่ได้

เปิดบทสนทนา

Korat ใช้ฟรี ใช้ได้บน Android และในเบราว์เซอร์ และแชททำงานเหมือนกันทั้งสองที่