Apakah mungkin menggunakan Sockets.io di sisi klien dan berkomunikasi dengan aplikasi berbasis PHP di server? Apakah PHP bahkan mendukung cara menulis kode 'koneksi berumur panjang'?
Semua kode sampel yang saya temukan untuk socket.io tampaknya untuk node.js di sisi server, jadi tidak ada bantuan di sana.
Jawaban:
Mungkin agak terlambat untuk menjawab pertanyaan ini, tetapi inilah yang saya temukan.
Saya tidak ingin berdebat tentang fakta bahwa node melakukan itu lebih baik daripada php atau tidak, ini bukan intinya.
Solusinya adalah: Saya belum menemukan implementasi socket.io untuk PHP.
Tetapi ada beberapa cara untuk mengimplementasikan WebSockets . Ada plugin jQuery ini memungkinkan Anda untuk menggunakan Websockets sementara merendahkan anggun untuk browser yang tidak mendukung. Di sisi PHP, ada kelas ini yang tampaknya paling banyak digunakan untuk server PHP WS.
sumber
Jika Anda ingin menggunakan socket.io bersama dengan php ini mungkin jawaban Anda!
situs web proyek:
elephant.io
mereka juga ada di github:
https://github.com/wisembly/elephant.io
Elephant.io menyediakan klien socket.io yang sepenuhnya ditulis dalam PHP yang seharusnya dapat digunakan di mana saja dalam proyek Anda.
Ini adalah pustaka yang ringan dan mudah digunakan yang bertujuan untuk menghadirkan fungsionalitas waktu-nyata ke aplikasi PHP melalui socket.io dan websockets untuk tindakan yang tidak dapat dilakukan dalam javascript penuh.
contoh dari situs web proyek (berkomunikasi dengan server websocket melalui php)
server php
server socket io
sumber
UPDATE: Aug 2014 Situs socket.io v1.0 saat ini memiliki contoh PHP: - https://github.com/rase-/socket.io-php-emitter
sumber
Jika Anda benar-benar ingin menggunakan PHP sebagai backend Anda untuk socket.io, berikut adalah apa yang saya temukan. Dua alternatif sisi socket.io php server.
https://github.com/walkor/phpsocket.io
https://github.com/RickySu/phpsocket.io
Kode exmaple untuk repositori pertama seperti ini.
sumber
Untuk 'koneksi berumur panjang' yang Anda sebutkan, Anda dapat menggunakan Ratchet untuk PHP. Ini adalah perpustakaan yang dibangun berdasarkan fungsi Stream Socket yang didukung PHP sejak PHP 5.
Untuk sisi klien, Anda perlu menggunakan WebSocket yang didukung HTML5 alih-alih Socket.io (karena Anda tahu, socket.io hanya berfungsi dengan node.js).
Jika Anda masih ingin menggunakan Socket.io, Anda dapat mencoba cara ini: - cari & dapatkan socket.io.js untuk digunakan klien - bekerja dengan Ratchet untuk mensimulasikan cara socket.io di server
Semoga ini membantu!
sumber
Erm, mengapa kamu mau? Biarkan PHP di backend dan NodeJS / Sockets untuk melakukan hal yang tidak menghalangi.
Ini adalah sesuatu untuk Anda mulai: http://groups.google.com/group/socket_io/browse_thread/thread/74a76896d2b72ccc
Secara pribadi saya telah menjalankan express dengan titik akhir yang mendengarkan dengan jelas untuk interaksi dari PHP.
Misalnya, jika saya telah mengirim email kepada pengguna, saya ingin socket.io menampilkan pemberitahuan waktu-nyata kepada pengguna.
Ingin interaksi dari socket.io ke php, Anda bisa melakukan sesuatu seperti ini:
Serius, PHP sangat bagus untuk melakukan hal-hal sisi server dan membiarkannya dengan koneksi yang tidak memiliki tempat di domain ini sekarang. Mengapa melakukan polling yang lama ketika Anda memiliki soket web atau flash.
sumber
Saya tahu orang yang berjuang! Tapi baru-baru ini saya cukup banyak bekerja dengan Workerman. Jika Anda belum menemukan kerangka kerja php ini maka Anda sebaiknya memeriksanya!
Well, Workerman adalah kerangka kerja PHP asinkron yang digerakkan untuk dengan mudah membangun aplikasi jaringan yang cepat dan dapat diskalakan. (Saya baru saja menyalin dan menempelkannya dari situs web mereka hahahah http://www.workerman.net/en/ )
Cara mudah untuk menjelaskan ini adalah bahwa ketika datang pemrograman web socket yang Anda benar-benar perlu miliki adalah memiliki 2 file di server Anda atau server lokal (di mana pun Anda bekerja).
server.php (kode sumber yang akan menanggapi semua permintaan klien)
client.php / client.html (kode sumber yang akan melakukan hal-hal yang diminta)
Jadi pada dasarnya, Anda benar kode terlebih dahulu pada Anda server.php dan mulai server. Biasanya, karena saya menggunakan windows yang menambah perjuangan, saya menjalankan server melalui perintah ini -> php server.php start
Nah jika Anda menggunakan xampp. Inilah satu cara untuk melakukannya. Pergi ke mana pun Anda ingin meletakkan file Anda. Dalam kasus kami, kami akan memasukkan file
C: /xampp/htdocs/websocket/server.php
C: /xampp/htdocs/websocket/client.php atau client.html
Dengan asumsi bahwa Anda sudah memiliki file-file itu di server lokal Anda. Buka Git Bash atau Command Line atau Terminal atau apa pun yang Anda gunakan dan unduh pustaka php di sini.
https://github.com/walkor/Workerman
https://github.com/walkor/phpsocket.io
Saya biasanya mengunduhnya melalui komposer dan hanya memuat secara otomatis file-file itu dalam skrip php saya.
Dan juga periksa yang ini. Ini sangat penting ! Anda memerlukan perpustakaan javascript ini agar Anda client.php atau client.html untuk berkomunikasi dengan server.php ketika Anda menjalankannya.
https://github.com/walkor/phpsocket.io/tree/master/examples/chat/public/socket.io-client
Saya hanya menyalin dan menempel folder socket.io-client itu pada tingkat yang sama dengan server.php saya dan client.php saya
Berikut adalah kode sumber server.php
Dan di sini adalah client.php atau client.html source
Sekali lagi, buka baris perintah Anda atau git bash atau terminal tempat Anda meletakkan file server.php Anda. Jadi dalam kasus kami, yaitu C: / xampp / htdocs / websocket / dan ketik php server.php mulai dan tekan enter.
Lalu buka browser Anda dan ketik http: //localhost/websocket/client.php untuk mengunjungi situs Anda. Kemudian cukup ketik apa saja ke kotak teks itu dan Anda akan melihat websocket php dasar saat bepergian!
Anda hanya perlu mengingatnya. Dalam pemrograman soket web, itu hanya membutuhkan server dan klien. Jalankan kode server terlebih dahulu dan buka kode klien. Dan begitulah! Semoga ini membantu!
sumber
Jika Anda benar-benar ingin menggunakan PHP sebagai backend Anda untuk WebSockets, tautan ini dapat membantu Anda:
https://github.com/lemmingzshadow/php-websocket
http://www.htmlgoodies.com/html5/other/create-a-bi-directional-connection-to-a-php-server-using-html5-websockets.html#fbid=QqpDVi8FqD9
sumber
Bagaimana dengan ini ? PHPSocketio ?? Ini adalah alternatif sisi server socket.io php. Pengulangan acara didasarkan pada ekstensi acara pecl. Meski belum mencobanya sendiri sampai sekarang.
sumber
Kami sekarang pada tahun 2018 dan hoola, ada cara untuk mengimplementasikan WS dan WAMPServer di php. Itu Disebut Ratchet .
sumber
Saya belum mencobanya, tetapi Anda harus dapat melakukan ini dengan ReactPHP dan komponen soket ini . Tampak seperti Node, tetapi dalam PHP.
sumber
Lihat di perpustakaan ini untuk php http://phptrends.com/category/70 . Atau gunakan asli dari php http://www.php.net/manual/en/book.sockets.php .
sumber
Saya sedang mencari cara yang sangat sederhana untuk membuat PHP mengirim pesan socket.io ke klien.
Ini tidak memerlukan perpustakaan PHP tambahan - itu hanya menggunakan soket.
Alih-alih mencoba terhubung ke antarmuka websocket seperti banyak solusi lain, cukup sambungkan ke server node.js dan gunakan
.on('data')
untuk menerima pesan.Kemudian,
socket.io
bisa meneruskannya ke klien.Deteksi koneksi dari server PHP Anda di Node.js seperti ini:
Inilah kode php yang sangat sederhana - saya membungkusnya dalam suatu fungsi - Anda dapat menemukan sesuatu yang lebih baik.
Perhatikan bahwa
8080
ini adalah port ke server Node.js saya - Anda mungkin ingin mengubahnya.Anda bisa menggunakannya seperti ini:
sio_message("chat message","Hello from PHP!");
Anda juga dapat mengirim array yang dikonversi ke json dan diteruskan ke klien.
sio_message("DataUpdate",Array("Data1" => "something", "Data2" => "something else"));
Ini adalah cara yang berguna untuk "mempercayai" bahwa klien Anda mendapatkan pesan yang sah dari server.
Anda juga dapat meminta PHP meneruskan pembaruan basis data tanpa meminta ratusan klien untuk meminta basis data.
Saya berharap saya menemukan ini lebih cepat - semoga ini membantu! 😉
sumber
s.remoteAddress;
. Namun, saya tidak membuatnya bekerja. Saya mendapatkan koneksi dalam node, mendeteksi koneksi, remoteaddress benar, tetapis.on('data')
tidak pernah terjadi, tetapi tidak ada yang terjadi. Saya mencobas.on('msg')
juga. Saya menggunakan kode PHP persis Anda. Saya menggunakan https, untuk server simpul, tetapi itu tidak masalah?8080
? Jika tidak, Anda perlu mengubah port. Jika demikian, periksaRemote Address
yang dikembalikan - pastikan itu adalah loopback / alamat lokal - mungkin berbeda dengan pengaturan server Anda. Untuk pengujian, Anda dapat menghapus garisif(s.remoteAddress == "::ffff:127.0.0.1")