HTML:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>websocket-demo</title> <link rel="stylesheet" href=""> </head> <style> .txtcont{border: 1px solid black; width: 500px;height: 500px;} </style> <body> <input type="text" name="txt"> <button>提交</button> <div class="txtcont"></div> <script> var input = document.querySelector('input'); var button = document.querySelector('button'); var div = document.querySelector('div'); //1、创建 WebSocket 严格区分大小写 参数是WebSocket的服务地址 //var socket = new WebSocket('ws://echo.websocket.org'); var socket = new WebSocket('ws://127.0.0.1:2346'); //2、open: 当WebSocket服务链接成功是触发 socket.addEventListener('open',function(){ //添加一个监听事件 console.log('连接成功'); div.innerHTML = '服务连接成功'; }) //3、 主动向服务器推送数据 button.addEventListener('click',function(){ //按钮点击 var txt = input.value; //获取文本框的值 socket.send(txt); //主动发送数据 }) //4、接收 WebSocket 推送的数据 socket.addEventListener('message',function(e){ console.log(e.data); //服务器返回的数据 div.innerHTML = e.data; //写入到div中 }) //5、 服务断开 socket.addEventListener('close',function(){ div.innerHTML = '服务断开'; }); </script> </body> </html>
PHP-WebSocket服务端:
这是一个单独的服务,不用嵌套在任何一个框架都可以使用
首先有一个空目录 php-websocket
在该目录下有一个 test.php 文件
在该目录下下载依赖模块 workerman
composer require workerman/workerman
在 test.php 编写代码
<?php require_once __DIR__ . '/vendor/autoload.php';//注意:这里是绝对路径,请查看你是否可以访问到该文件 use Workerman\Worker; // 创建一个Websocket服务器,websocket服务器监听端口2346 $ws_worker = new Worker("websocket://0.0.0.0:2346"); // 设置当前Worker实例启动多少个进程 $ws_worker->count = 4; // 在新连接到来时发出 $ws_worker->onConnect = function($connection) { echo "New connection\n"; }; // 接收数据时发出 $ws_worker->onMessage = function($connection, $data) { // Send hello $data $connection->send('hello ' . $data); }; // 连接关闭时发出 $ws_worker->onClose = function($connection) { echo "Connection closed\n"; }; // 运行worker Worker::runAll();
最后启动该服务
php test.php start
如下图: