Jelaskan bugnya
Untuk beberapa alasan saat menggunakan fungsi "UserAgent.stop()" dibutuhkan sekitar 30 detik untuk menghentikan semuanya hingga merespons dengan janji yang sesuai.
Apa yang saya coba capai adalah perintah unregister penuh, di mana ia tidak hanya membuat unregister tetapi juga:
Dari apa yang saya pahami, fungsi "stop()" melakukan hal itu. Hanya saja itu memakan waktu terlalu banyak.
Log
Berikut adalah log dari konsol: log
Perilaku yang diamati
Hanya setelah sekitar ~32 detik kita bisa melihat di: 15:14:05,797
Log berikut:
sip.subscribe-dialog | Timer N expired for SUBSCRIBE dialog. Timed out waiting for NOTIFY.
Hanya setelah log di atas itu membuang penerbit dan tingkat transportasi (WS).
Apa yang membuat saya berpikir bahwa itu mungkin terjadi sebagai akibat dari pesan BERLANGGANAN bahwa penghitung waktu kedaluwarsa, tetapi tidak sepenuhnya yakin.
Informasi Lingkungan
Dikonfirmasi dalam kode ...
@john-e-riordan ini tampaknya menjadi masalah urutan operasi.
Di bagian atas user-agent.stop()
kita bertransisi ke status Stopped
.
Kami kemudian menelusuri registerers
, sessions
, lalu subscriptions
.
Fungsi subscription.dispose()
berhak mengirim SUBSCRIBE
dengan header Expires=0
. Itu menyebabkan NOTIFY
dikirim ke SIP.js yang menunjukkan bahwa langganan telah ditutup. Namun ada cek di user-agent.onTransportMessage()
yang memeriksa apakah user-agent
dihentikan. Dan kemudian menjatuhkan NOTIFY
karena status agen pengguna. Menyebabkan pelanggan menunggu waktu habis.
Kami akan bekerja untuk mendapatkan patch ini. Terima kasih.
menyatakan bahwa langganan telah ditutup. Namun ada cek di
user-agent.onTransportMessage()
yang memeriksa apakahuser-agent
dihentikan. Dan kemudian menjatuhkan `NOTIFY karena
Terima kasih banyak telah merespons dengan cepat dan menemukan akar penyebab masalah! Semoga segera diperbaiki :)
Omong-omong, saya menguji fungsi stop()
ketika saya tidak melakukan SIP SUBSCRIBE awal saya yang juga saya lakukan ketika membuat DAFTAR, dan semuanya bekerja dengan cepat. Tapi tentu saja saya membutuhkan SUBSCRIBE ini.
Terima kasih lagi!
Untuk mengatasinya, Anda dapat membuang langganan Anda secara manual sebelum memanggil stop()
pada agen pengguna.
Untuk mengatasinya, Anda dapat membuang langganan Anda secara manual sebelum memanggil
stop()
pada agen pengguna.
Terima kasih! Sudah dilakukan, tetapi tidak dengan cara yang efisien menurut saya. Jika Anda dapat menyarankan saya cara yang lebih baik itu akan sangat membantu.
Saya memiliki beberapa langganan yang saya buat saat pengguna terdaftar (seperti kehadiran, konferensi, dan beberapa acara lainnya).
Apakah ada cara untuk mengulangi semua langganan aktif dan memanggil metode dispose
atau unsubscribe
?
Saya melihat bahwa saya bisa mendapatkan daftar langganan dengan melakukan: userAgentObject._subscriptions
dan mendapatkan beberapa array Pelanggan dan untuk beberapa alasan saya tidak dapat menerimanya dan melakukan apa pun dengannya, seperti iterasi atau yang lainnya.
Cara saya melakukannya saat ini, tetapi sekali lagi, saya tidak menyukainya, untuk setiap jenis acara berlangganan, saya menyimpan pelanggan ke dalam variabel global yang berbeda di kelas dan untuk setiap variabel pelanggan saya memanggil unsubscribe
metode.
Omong-omong, apa perbedaan antara dispose
dan unsubscribe
? Saya berasumsi bahwa dispose
tidak akan berhenti berlangganan di PBX. Benar? Jika demikian, menurut saya itu kurang direkomendasikan, karena dalam kasus saya, jika saya tidak sepenuhnya berhenti berlangganan, PBX akan terus mengirimkan pesan NOTIFY yang tidak relevan ke Kamailio saya (yang dapat menyebabkan pemblokiran total karena Kamailio akan memblokir PBX saya jika itu terjadi). membebani dia).
Untuk mengatasinya, Anda dapat membuang langganan Anda secara manual sebelum memanggil
stop()
pada agen pengguna.
Ada kemajuan😊? Bagaimana melakukan ini sebelum bug diperbaiki?
Saya tidak berlangganan, tetapi UA.stop()
juga sangat lambat. Hampir 1 menit...
Terima kasih.
Untuk mengatasinya, Anda dapat membuang langganan Anda secara manual sebelum memanggil
stop()
pada agen pengguna.Ada kemajuan😊? Bagaimana melakukan ini sebelum bug diperbaiki?
Saya tidak berlangganan, tetapi
UA.stop()
juga sangat lambat. Hampir 1 menit...Terima kasih.
Tidak, masalah ini belum terselesaikan.
Tapi, Anda bisa melakukan apa yang saya lakukan... Anda bisa menghancurkan objek Anda secara manual satu per satu dengan urutan logis berikut:
Sebaiknya, lakukan setiap tindakan dengan janji. Maksud saya, gunakan then
sehingga Anda dapat menunggu setiap tindakan berjanji untuk kembali dan bertindak sesuai untuk melakukan langkah berikutnya.
Saya memiliki masalah yang sama. Saya tidak punya langganan. Bagi saya, menutup WebSocket terlalu lama, (20-50 detik)
Saya mencoba:
userAgent.transport.ws.close()
untuk memastikan apakah masalah saya terkait dengan WebSocket.Saya tidak memiliki konfigurasi khusus, cukup ikuti panduan SIP.js untuk mereproduksi. Saya tidak tahu apakah ini membantu atau terkait dengan masalah saya, tetapi saya mencoba membuka WebSocket dengan protokol sip tanpa perpustakaan apa pun dan menutupnya. Mereka berdua bertahan di bawah 1 detik.
Komentar yang paling membantu
Saya memiliki masalah yang sama. Saya tidak punya langganan. Bagi saya, menutup WebSocket terlalu lama, (20-50 detik)
Saya mencoba:
userAgent.transport.ws.close()
untuk memastikan apakah masalah saya terkait dengan WebSocket.Saya tidak memiliki konfigurasi khusus, cukup ikuti panduan SIP.js untuk mereproduksi. Saya tidak tahu apakah ini membantu atau terkait dengan masalah saya, tetapi saya mencoba membuka WebSocket dengan protokol sip tanpa perpustakaan apa pun dan menutupnya. Mereka berdua bertahan di bawah 1 detik.