WebSocket面向过程
$server = new swoole_websocket_server("0.0.0.0", 9578);
//客户端与服务器连接成功后
$server->on("open", function ($server, $request) {
$server->push($request->fd, "连接数{$request->fd}");
});
//收到客户端数据后回调
$server->on("message", function ($server, $frame) {
$server->push($frame->fd, $frame->data);
});
// 设置Request回调,websocket也可以同时作为Http服务器
$server->on("request", function (swoole_http_request $request, swoole_http_response $response) {
$message = $request->get;
// $request->push(23, json_encode($message));
});
//关闭
$server->on("close", function ($server, $fd) {
echo "client {$fd} closed\n";
});
//开启
$server->start();
启动websocket php a.php
http://www.blue-zero.com/WebSocket/ WebSocket 在线调试工具调试
或者 :ws://47.94.92.113:9578
参考教程:http://www.ruanyifeng.com/blog/2017/05/websocket.html
WebSocket面向对象
<?php
//Websocket 面向对象的测试
class Websocket
{
private $server = null;
public function __construct()
{
$this->server = new swoole_websocket_server("0.0.0.0", 9578);
$this->server->on("open", [$this, "onOpen"]);
$this->server->on("message", [$this, "onMessage"]);
$this->server->on("close", [$this, "onClose"]);
$this->server->start();
}
public function onOpen($server, $request)
{
$server->push($request->fd, "连接数{$request->fd}");
}
public function onMessage($server, $frame)
{
$server->push($frame->fd, $frame->data);
}
public function onClose($server, $fd)
{
echo "client {$fd} closed\n";
}
}
$obj = new Websocket();
模拟客户端连接WebSocket
var wss = new WebSocket('ws://47.94.92.113:9578');
//客户端连接服务器
wss.onopen = function (evt) {
console.log("WebSocket连接成功");
}
wss.onmessage = function (evt) {
console.log("收到服务器返回的信息:"+evt.data);
}
//关闭
wss.onclose = function (evt) {
console.log("WebSocket关闭");
};
// 错误
wss.onerror = function (evt,e) {
console.log("错误信息:"+evt.data);
}