Apakah mungkin membuat aplikasi web yang, dengan bantuan server pusat, dapat membuat koneksi langsung dengan pengguna lain dari aplikasi web yang sama? Saya membayangkan proses yang mirip dengan meninju lubang UDP.
Saya telah membaca tentang API WebSockets baru di HTML5, tetapi tampaknya Anda harus memulai koneksi dengan server yang kompatibel dengan WS sebelum koneksi yang sepenuhnya dupleks dapat dimulai. Saya memikirkan lebih lanjut tentang proses untuk membuat koneksi langsung antar klien, dengan server hanya terlibat dalam jabat tangan awal.
CATATAN: Applet Java tidak dihitung. Saya hanya tertarik pada teknologi browser standar.
javascript
ajax
html
Peter O.
sumber
sumber
Jawaban:
Alih-alih tebakan cerdas, berikut adalah jawaban yang diinformasikan:
HTML 5 berencana untuk mengizinkan koneksi peer to peer dari javascript, tetapi koneksi ini TIDAK AKAN RAW TCP.
Spesifikasi lengkapnya dapat ditemukan di http://dev.w3.org/html5/websockets/
jrh
EDIT: dengan referensi khusus untuk koneksi peer to peer, lihat tautan ini:
Penting untuk dicatat bahwa kapabilitas masih dinegosiasikan. Alangkah baiknya bisa membuat aplikasi web "obrolan lokal" :)
jrh
sumber
PERBARUI 17/10/2012: Fungsi ini sekarang ada di Chrome Stable v22. Untuk menggunakan fungsi ini di Chrome, seseorang harus mengaktifkan dua bendera di chrome: // flags:
Kemudian Anda dapat mengunjungi Halaman Demo AppRTC untuk mencoba demo tersebut. Lihat WebRTC - Menjalankan halaman Demo untuk petunjuk lebih detail tentang menyiapkan Chrome untuk menggunakan fungsi peer to peer dan mengaktifkan pengambilan perangkat.
PEMBARUAN: Para insinyur di Ericcson Labs memiliki bukti konsep dalam pembuatan WebKit yang melakukan HTML5 Peer to Peer Conversational Video .
Mereka memiliki demonstrasi di blog mereka tentang teknologi dalam tindakan, serta diagram dan penjelasan tentang cara kerja teknologi.
Mereka sedang bekerja untuk menstabilkan ini dan berkomitmen ke repositori WebKit.
sumber
Ya akhirnya.
Pada tulisan ini (2017), WebRTC sekarang menjadi bagian standar dari sebagian besar browser modern (sekitar 70% dari yang digunakan), dan memungkinkan untuk streaming multimedia, peer-to-peer, dan hole-punching.
Dokumen, kode contoh, dan contoh langsung untuk WebRTC dapat ditemukan di html5rocks.com .
Menurut caniuse.com dan html5rocks.com , browser berikut mendukung WebRTC:
Dukungan penuh: Edge 14, Firefox 22, Firefox Android 55
Dukungan parsial: Browser Android 56, Chrome 20, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC Browser Android 11.4
Dukungan masa depan ( Q3 2017): Chrome untuk iOS 11, Safari 11 untuk iOS 11 dan OS X 10.11
Tidak ada dukungan: IE, IE Mobile, Opera Mini
Tingkat saturasi WebRTC terbatas pada perangkat Apple, karena Safari 11 belum dirilis dan memerlukan iOS 11 atau OS X 10.11. Meskipun memproyeksikan dari tren peningkatan sebelumnya, WebRTC seharusnya tersedia di sekitar 75% perangkat iOS pada 2018, dan 100% pada 2020.
sumber
Ada sejumlah alasan mengapa hal ini menjadi rumit:
WebSockets dirancang untuk memecahkan kedua masalah ini, tetapi (sengaja, saya harapkan) bukan dua lainnya. Ketika mereka berbicara tentang peer-to-peer dalam spesifikasi HTML5, mereka berbicara tentang komunikasi dupleks penuh antara server dan klien, bukan antara satu klien dan klien lainnya.
Namun, akan mudah untuk menerapkan tumpukan jaringan yang tepat di atas soket web - dengan syarat bahwa semua komunikasi masih harus dilakukan melalui server. Saya telah melihat ini dilakukan dengan menggunakan polling panjang (seorang teman saya di Uni menulis tumpukan TCP / IP penuh menggunakan polling panjang).
sumber
Saya kedua harshath.jr: Anda bisa saja memiliki server yang bertindak sebagai direktori (memperlihatkan "asal" dari setiap agen yang terhubung; asalnya adalah skema + host + port seperti dalam draf-abarth-origin , dengan skema menjadi "ws" atau "wss"). Anda kemudian dapat memulai koneksi WebSocket peer-to-peer; yang SOP yang bekerja melalui berkat CORS . Tentu saja, ini berarti bahwa setiap agen (yaitu browser) harus menanamkan server WebSocket-nya sendiri (à la Opera Unite).
Sementara itu, lakukan dengan cara XMPP / IRC / etc.: tidak ada koneksi peer-to-peer tetapi koneksi WebSocket ke server pusat (atau jaringan!) Untuk meneruskan pesan ke agen yang terhubung (akhirnya menggunakan beberapa WebSocket tertentu " subprotocol ")
EDIT: perhatikan bahwa semua ini sebenarnya di luar cakupan HTML5 (semua hal itu pernah menjadi bagian dari HTML5 tetapi telah dipisahkan menjadi spesifikasinya sendiri)
sumber
Ide keseluruhan dari Web Sockets adalah untuk memecahkan masalah dengan Firewall dan proxy http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket
sumber