teamikl / ninjam-chat

NINJAM Chat gateway
http://teamikl.github.io/ninjam-chat
2 stars 1 forks source link

NINJAM の回線切断時の例外が捕捉できない #9

Closed teamikl closed 9 years ago

teamikl commented 9 years ago

NINJAM の回線切断時の例外が捕捉できない

この課題は、#4 のサブタスクです。

問題点

teamikl commented 9 years ago

可能なら Keep-Alive をクライアント側から先に送ってみる

Python での setInterval 実装

teamikl commented 9 years ago
import time
from threading import Thread

def setInterval(func, interval):
    def task(func, interval):
        while 1:
            time.sleep(interval)
            func()
    thread = Thread(target=task, args=(func, interval), daemon=True)
    thread.start()
    return thread
teamikl commented 9 years ago

現在の実装での問題点

Keep-Aliveがサーバからの応答時のみになっている為、 受信バッファが込み合ってる時は、ラグが生じる。

対策

Keep-Alive 送信は、クライアント・サーバ双方が独立したタイミングで送る。 受信時には時間をセットし、受信タイマーでは、Keep-Aliveが時効の場合切断。(サーバ側)

改善案

大きなオーディオchunkがある場合、Keep-Aliveやチャットメッセージの遅延に繋がるので、 送信順は、Priority Queue で優先度を指定。Keep-Alive > Chat Message, User Channel Info > Audio 但し、直列化が必要なデータの順序は変更しない。