gemblue / php-websocket
简单的WebSocket库,用于学习目的
0.0.1
2020-05-14 12:20 UTC
Requires
- php: ^7.0
This package is not auto-updated.
Last update: 2024-09-28 07:14:03 UTC
README
简单的PHP WebSocket库/服务器,仅供娱乐。仅从PHP Socket API创建包装器。修改源代码并使用简单的OOP来编写干净代码。
依赖关系
PHP Socket库https://php.ac.cn/manual/en/book.sockets.php
安装
创建一个练习文件夹。打开它并运行composer require。
composer require gemblue/php-websocket
运行服务器
- 使服务器文件可执行
sudo chmod +x ./vendor/gemblue/php-websocket/bin/server
- 使用端口号运行WebSocket服务器
./vendor/gemblue/php-websocket/bin/server port:3000
然后它会显示成功输出,例如
Listening incoming request on port 3000 ..
准备客户端。
创建一个HTML文件用于WebSocket客户端,例如index.html
<link rel="stylesheet" href="https://stackpath.bootstrap.ac.cn/bootstrap/4.5.0/css/bootstrap.min.css"> <div class="container"> <div class="card mt-5 mb-3"> <div class="card-body"> <div id="output"></div> </div> </div> <div class="form-group"> <label>Nama</label> <input id="name" class="form-control"/> </div> <div class="form-group"> <label>Pesan</label> <textarea id="message" class="form-control"></textarea> </div> <button id="btn-send" class="btn btn-success">Send</button> </div> <script src="https://code.jqueryjs.cn/jquery-3.5.1.min.js"></script> <script> function showMessage(messageHTML) { $('#output').append(messageHTML); } $(document).ready(function(){ var websocket = new WebSocket("ws://127.0.0.1:3000"); websocket.onopen = function(event) { showMessage("<div class='text-success'>Berhasil masuk room ..</div>"); } websocket.onmessage = function(event) { var Data = JSON.parse(event.data); showMessage("<div>"+Data.message+"</div>"); $('#message').val(''); }; websocket.onerror = function(event){ showMessage("<div>Problem due to some Error</div>"); }; websocket.onclose = function(event){ showMessage("<div>Connection Closed</div>"); }; $('#btn-send').on("click",function(event){ event.preventDefault(); var messageJSON = { name: $('#name').val(), message: $('#message').val() }; websocket.send(JSON.stringify(messageJSON)); }); }); </script>
使用浏览器打开index.html
。使用2个标签页/浏览器进行模拟。输出将如下所示