Proyek ini merupakan implementasi Java sumber terbuka dari server Socket.IO. Berdasarkan kerangka server Netty.
Berlisensi di bawah Lisensi Apache 2.0.
JAR kompatibel dengan Java 8 tetapi memerlukan Java 11+ untuk membuat info modul.
Sertakan yang berikut ini ke daftar ketergantungan Anda:
< dependency >
< groupId >com.corundumstudio.socketio</ groupId >
< artifactId >netty-socketio</ artifactId >
< version >2.0.12</ version >
</ dependency >
Umpan balik pelanggan pada tahun 2012 :
CentOS, 1 CPU, 4GB RAM dijalankan pada VM: CPU 10%, Memori 15%
6000 sesi polling berdurasi xjam atau 15.000 sesi soket web
4000 pesan per detik
Umpan balik pelanggan pada tahun 2014 :
"Untuk menguji solusi ini, kami menjalankan 30.000 klien websocket secara bersamaan dan berhasil mencapai puncak total sekitar 140.000 pesan per detik dengan penundaan rata-rata kurang dari 1 detik." (c) Viktor Endersz - Solusi Olahraga Kambi
Orkestra Multipemain: multiplayer-orchestra.com
AVOS Cloud: avoscloud.com
Solusi Olahraga Kambi: kambi.com
ARSnova: arsnova.eu
Fitur - pengaturan EnableCors ditambahkan (terima kasih kepada @zd925)
Fitur - kemampuan untuk mendefinisikan dekoder permintaan http (terima kasih kepada @gurkancakir)
Memperbaiki - jika ack kembali setelah pemicu batas waktu, IllegalStateException akan dilempar (terima kasih kepada @malinGH)
Memperbaiki - mencegah klien terhubung berulang kali ke namespace (terima kasih kepada @ bigtian99)
Memperbaiki - memperlakukan lampiran sebagai biner secara default (terima kasih kepada @nicsor)
Memperbaiki - penanganan kegagalan jabat tangan yang dapat dipulihkan (terima kasih kepada @berinhardt)
Memperbaiki - HashedWheelTimeoutScheduler harus menghapus scheduleFutures sebelum pelaksanaan tugas (terima kasih kepada @berinhardt)
Memperbaiki - namespace khusus mendukung data autentikasi (terima kasih kepada @Addi)
Memperbaiki - lampiran pembacaan buffer bingkai
Memperbaiki - kebocoran memori saat WebSocketServerHandshakeException atau Saluran gagal (terima kasih kepada @h3mant-1)
Fitur - penguraian beberapa pesan v3/v4 dalam satu badan polling HTTP (terima kasih kepada @unverbraucht)
Memperbaiki - kesalahan IllegalReferenceCountException
Memperbaiki - kemungkinan OOM yang disebabkan oleh penguraian lampiran
Dukungan Github Actions dibuat oleh @liangyuanpeng
Fitur - Dukungan modul Java (terima kasih kepada @unverbraucht)
Fitur - AuthTokenListener ditambahkan (terima kasih kepada @unverbraucht)
Fitur - dukungan pemisah multi-paket (terima kasih kepada @unverbraucht)
Peningkatan - Kirim acara cuti massal alih-alih beberapa acara cuti saat terputus (terima kasih kepada @ ksahu750)
Memperbaiki - NPE selama batas waktu respons ack (terima kasih kepada @BlueSodaWater)
Memperbaiki - Kebocoran Sumber Daya dalam metode readVersion() (terima kasih kepada @JHOANG23)
Fitur - menambahkan ketersediaan untuk menambahkan pasangan nilai kunci ke penyimpanan soket selama otorisasi (terima kasih kepada @shutuper)
Fitur - metode getRoomOperations() dengan parameter varargs ruangan (terima kasih kepada @shutuper)
Memperbaiki - klien tidak dapat terhubung ke namespace non-default (terima kasih kepada @lyjnew)
Memperbaiki - NPE di WebSocketTransport dan PollingTransport (terima kasih kepada @Hunterk95)
JDK 8 adalah versi minimum yang diperlukan untuk penggunaan.
Memperbaiki - pesan yang lebih besar dari maxFramePayloadLength menyebabkan kebocoran memori
Fitur - Dukungan protokol SocketIO 4.x (terima kasih kepada @HashZhang)
Memperbaiki - menambahkan semua kelas khusus socketio ke bundel (terima kasih kepada @rishabhgup)
Memperbaiki - kesalahan io.netty.channel.ChannelPipelineException
Fitur - Metode SocketIOClient.isWritable() ditambahkan (terima kasih @xuwenqing04)
Fitur - Metode Namespace.addListeners (Iterable pendengar) ditambahkan (terima kasih @damonxue)
Memperbaiki - paket acara pemutusan harus berupa subtipe MESSAGE (terima kasih @MasterShi)
Memperbaiki - BaseStoreFactory melempar NPE
Fitur - Menambahkan dukungan untuk bergabung dan keluar secara massal (terima kasih @ ksahu750)
Memperbaiki - terputus secara otomatis (regresi sejak 1.7.22)
Fitur - dukungan ping/pong untuk protokol socketio v4 (terima kasih kepada @HashZhang)
Memperbaiki - nama transportasi harus dicentang dalam huruf besar (regresi sejak 1.7.20)
Fitur - pengaturan needClientAuth ditambahkan (terima kasih kepada @huws)
Memperbaiki - ContinuationWebSocketFrame harus digunakan jika payload > maxFramePayloadLength (terima kasih kepada 俞伟搏)
Memperbaiki - kelas src pendengar acara dan kacang tujuan tidak cocok (terima kasih kepada @cifaz)
Memperbaiki - parameter transportasi ilegal (terima kasih kepada @ mirus36)
Fitur - pengaturan writeBufferWaterMarkLow dan writeBufferWaterMarkHigh ditambahkan (terima kasih kepada @xuminwlt)
Fitur - pengaturan izinkanHeaders ditambahkan (terima kasih kepada @HuangHuan)
Fitur - metode getCurrentRoomSize() ditambahkan (terima kasih kepada @sunxiaoyu3)
Memperbaiki - bug namespace (terima kasih kepada @@johntyty912)
Memperbaiki - beberapa node dengan redisson menerima pesan yang sama (terima kasih kepada 梁嘉祺)
Memperbaiki - beberapa node hanya menerima satu pesan TINGGALKAN pada pemutusan klien (terima kasih kepada @ GaryLeung922)
Fitur - dukungan untuk pencegat acara yang menangkap semua acara (terima kasih kepada @yosiat)
Memperbaiki - penyiaran acara namespace (terima kasih kepada Volodymyr Masliy)
Fitur - pengaturan randomSession ditambahkan ke objek Config (terima kasih kepada @yuanxiangz)
Memperbaiki - NPE di WebSocketTransport
Memperbaiki - NPE & kebocoran memori (berkat zhaolianwang)
Memperbaiki - penguraian namespace (berkat Redliver)
Memperbaiki - Kompatibilitas Redisson 3.9+
Memperbaiki - penanganan ACK yang tidak aman untuk thread (terima kasih kepada @dawnbreaks)
Memperbaiki - saluran polling panjang yang tidak aktif menyebabkan kebocoran memori (terima kasih kepada @dawnbreaks)
Memperbaiki - pemrosesan CloseFrame websocket (terima kasih kepada @hangsu.cho)
Memperbaiki - WebSocketTransport NPE
Memperbaiki - ID Sesi tidak unik lagi
Memperbaiki - koneksi dasar tetap tidak ditutup pada batas waktu ping
Memperbaiki - masalah "fin_close".
Fitur - menambahkan alamat soket lokal untuk koneksi (terima kasih kepada @SergeyGrigorev)
Fitur - metode addPingListener
ditambahkan (terima kasih kepada @lovebing)
Fitur - tambahkan ThreadFactory untuk HashedWheelTimer (terima kasih kepada @ hand515)
Memperbaiki - mengubah opsi SO_LINGER untuk ditangani sebagai saluran anak (bukan saluran server) (terima kasih kepada @robymus)
Memperbaiki - kebocoran ByteBuf jika lampiran biner digunakan
Memperbaiki - memulihkan sesi dari Cookie (terima kasih kepada @wuxudong)
Memperbaiki - NumberFormatException ketika b64 adalah nilai bool (terima kasih kepada @vonway)
Memperbaiki - pengkodean data untuk transportasi polling
Fitur - Menambahkan opsi untuk mengubah SSL KeyFactoryAlgorithm menggunakan Konfigurasi (terima kasih kepada @robymus)
Peningkatan - Peningkatan penanganan biner (terima kasih kepada Sergey Bushik)
Memperbaiki - Gagal menandai janji sukses karena sudah berhasil (terima kasih kepada @robymus)
Fitur - Metode SocketIOServer.removeAllListeners
ditambahkan
Fitur - Metode BroadcastOperations.sendEvent
dengan parameter excludedClient
ditambahkan
Peningkatan - Redisson diperbarui ke 2.4.0
Memperbaiki - kebocoran memori pada objek Namespace (terima kasih kepada @CrazyIvan007)
Memperbaiki - Kesalahan melempar jika transportasi tidak didukung
Memperbaiki - Klien terputus saat menggunakan Polling - IndexOutOfBoundsException
Memperbaiki - netty diperbarui ke versi 4.1.0.CR3
Memperbaiki - penguraian paket biner (terima kasih kepada Winston Li)
Fitur - Dukungan kompresi
Memperbaiki - Penanganan permintaan klien DotNET
Memperbaiki - Penguraian format panjang paket
Memperbaiki - melewatkan 'd=' dalam paket
Memperbaiki - Klien polling secara sporadis terputus sebelum waktunya (berkat lpage30)
Memperbaiki - koneksi tetap terbuka selamanya jika server mengirim paket close
Memperbaiki - kompatibilitas dengan Redisson versi terbaru
Peningkatan - WebSocketServerHandshaker.allowExtensions
true
sekarang
Peningkatan - Implementasi cookie SessionID (terima kasih kepada @ryandietrich)
Memperbaiki - kebocoran clientRooms (terima kasih kepada @andreaspalm)
Memperbaiki - ExceptionListener tidak digunakan untuk kesalahan dalam penguraian JSON
Memperbaiki - serangan "saluran senyap".
Peningkatan - parameter useStrictOrdering
ditambahkan untuk pemesanan ketat paket websocket
Peningkatan - FAIL_ON_EMPTY_BEANS = false
yang disetel di dekoder json
Perbaikan - tidak perlu menambahkan jackson lib jika Anda menggunakan impl JsonSupport sendiri
Memperbaiki - dukungan klien SocketIO 1.3.x
Memperbaiki - Penanganan pengkodean Charset (terima kasih kepada alim-akbashev)
Peningkatan - SocketIONamespace.getName()
ditambahkan
Memperbaiki - Agregasi frame WebSocket
Memperbaiki - rilis buffer WebSocket
Memperbaiki - Kesalahan Unexpected end-of-input in VALUE_STRING
Memperbaiki - Access-Control-Allow-Credentials BENAR untuk permintaan dengan header asal
Fitur - Parameter Configuration.sslProtocol
ditambahkan
Memperbaiki - Penanganan ack BinaryEvent
Memperbaiki - pengkodean/dekode BinaryEvent non-b64
Memperbaiki - kebocoran buffer selama pengkodean paket
Memperbaiki - pengkodean paket
Memperbaiki - pengkodean/dekode BinaryEvent
Memperbaiki - penanganan koneksi tidak tertandingi
Fitur - pengaturan origin
ditambahkan
Fitur - pengaturan crossDomainPolicy
ditambahkan
Fitur - Metode SocketIOServer.startAsync
ditambahkan
Fitur - Dukungan Epoll
Peningkatan - Dukungan BinaryEvent
Memperbaiki - Penanganan pemutusan SocketIOClient
Memperbaiki - menyiarkan panggilan balik
Memperbaiki - NPE maka tidak ada transportasi yang ditentukan selama autentikasi
Memperbaiki - batas waktu ping untuk transportasi pemungutan suara
Memperbaiki - kebocoran buffer di PacketEncoder
Memperbaiki - pengkodean pesan keluar yang salah menggunakan transportasi websocket
Memperbaiki - NPE dalam transportasi websocket
Memperbaiki - beberapa decoding paket dalam transportasi polling
Memperbaiki - kebocoran buffer
Fitur - kemampuan untuk mengatur Access-Control-Allow-Origin
khusus melalui Configuration.origin
Memperbaiki - koneksi melalui CLI socket.io-client
Fitur - Dukungan protokol Socket.IO 1.0. Berkat protokol decoding/encoding yang baru, kecepatannya meningkat
Dijatuhkan - metode SocketIOClient.sendMessage
, SocketIOClient.sendJsonObject
dan pendengar terkait
Dijatuhkan - Dukungan transportasi Flashsocket
Dijatuhkan - protokol versi 0.7 ... 0.9.16
Peningkatan - pengkodean paket tunggal dioptimalkan, sebagian besar digunakan dalam transportasi WebSocket. Waktu pengkodean berkurang hingga 40% (berkat Viktor Endersz)
Perbaikan - penanganan ruangan dioptimalkan
Perbaikan - Metode ExceptionListener.ExceptionCaught ditambahkan
Menghentikan perubahan api - Configuration.autoAck diganti dengan ackMode
Fitur - pengaturan trustStore ditambahkan
Fitur - pengaturan maxFramePayloadLength ditambahkan
Fitur - metode getAllClients dan getClient ditambahkan ke SocketIONamespace
Memperbaiki - SocketIOServer.getAllClients mengembalikan jumlah klien yang salah
Memperbaiki - masalah rilis pesan
Memperbaiki - masalah dengan redefinisi konfigurasi pendengar pengecualian
Menghentikan perubahan api - DataListener.onData sekarang menampilkan Pengecualian
Peningkatan - parameter data ditambahkan ke pendengar pengecualian
Peningkatan - kemampuan untuk mengatur konfigurasi soket
Peningkatan - Parameter Configuration.autoAck ditambahkan
Memperbaiki - Penanganan AckCallback selama pemutusan klien
Memperbaiki - kode HTTP jabat tangan tidak sah diubah menjadi 401
Menghentikan perubahan api - Pengaturan Configuration.heartbeatThreadPoolSize dihapus
Fitur - dukungan kacang Spring beranotasi melalui SpringAnnotationScanner
Fitur - pendengar pengecualian umum
Perbaikan - ScheduledExecutorService diganti dengan HashedWheelTimer
Memperbaiki - penanganan pemutusan klien namespace yang salah
Memperbaiki - pengecualian dalam metode onConnect/onDisconnect/isAuthorized menyebabkan server hang
Menghentikan perubahan api - Tanda tangan metode SocketIOClient.sendEvent diubah
Peningkatan - dukungan acara multitipe melalui anotasi MultiTypeEventListener dan OnEvent
Peningkatan - acara multi tipe menerima dukungan melalui MultiTypeAckCallback
Peningkatan - Metode SocketIOClient.getHandshakeData ditambahkan
Peningkatan - Jedis diganti dengan Redisson
Memperbaiki - Kompatibilitas JDK 1.6+
Fitur - dukungan otorisasi
Memperbaiki - regresi transportasi pengumpulan XHR
Memperbaiki - Regresi transportasi Websocket
Memperbaiki - namespace NPE di PacketHandler
Memperbaiki - pelaksana dimatikan saat server berhenti
Fitur - dukungan toko klien (Memori, Redis, Hazelcast).
Fitur - siaran terdistribusi di seluruh dukungan node netty-socketio (Redis, Hazelcast).
Fitur - Dukungan OSGi (berkat rdevera)
Peningkatan - optimasi pengumpulan XHR
Peningkatan - Metode SocketIOClient.getAllRooms ditambahkan
Memperbaiki - kebijakan flash "kebocoran permintaan" setelah memuat ulang halaman (berkat ntrp)
Memperbaiki - pemuatan swf websocket (berkat ntrp)
Memperbaiki - url yang salah menyebabkan potensi DDoS
Memperbaiki - Visibilitas paket Event.class diubah untuk menghindari penggunaan langsung
Peningkatan - Pendaftaran modul Jackson yang disederhanakan
Memperbaiki - NPE selama shutdown
Perbaikan - metode isEmpty ditambahkan ke Namespace
Memperbaiki - pemanggilan panggilan balik batas waktu ack yang salah
Memperbaiki - serialisasi desimal besar untuk JSON
Memperbaiki - loop tak terhingga selama pengecualian penanganan paket
Memperbaiki - penanganan 'klien tidak ditemukan'
Peningkatan - optimasi alokasi buffer pengkodean.
Peningkatan - buffer pengkodean sekarang dikumpulkan dalam memori untuk mengurangi tekanan GC (fitur netty 4.x).
Memperbaiki - kesalahan pada properti yang tidak diketahui selama deserialisasi.
Memperbaiki - kebocoran memori dalam transportasi polling yang panjang.
Perbaikan - mencatat info kesalahan dengan data masuk.
Rilis stabil pertama.