Html客户端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>WebSocket客户端</title>
    <style>
        *{ font-size: 12px;}
        div{ border: 1px solid #000; height: auto; width: 80%;}
    </style>
    <script src="http://index.jsx6.com/public/jquery.js"></script>
</head>
<body>
<div id="message">
    <h3>发丝/接收内容</h3>
</div>
<br/>
<div>
    <input type="text" id="text">
    <button id="send">发送</button><button id="close">关闭连接</button>
</div>
<br/>
</body>
<script>
 
    //与服务器建立通信
    var socket = new WebSocket('ws://123.59.66.217:8080');
    //连接状态
    //console.log(socket.readyState);
 
    //发送数据
    $('#send').click(function () {
        var val = $('#text').val();
        //发送数据
        socket.send(val);
    })
 
    //接收数据
    socket.onmessage = function (e) {
        console.log(e.data);
        $('#message').append(e.data+'<br/>');
    }
 
    //关闭连接
    $('#close').click(function () {
        socket.close();
    })
</script>
</html>
 
  

WebSocket服务器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  
<?php
header("content-type:text/html;charset=utf-8");
 
/**
 * 创建WebSocket服务器
 */
 
new WebSocket();
 
class WebSocket
{
 
    public function __construct()
    {
        $server = new swoole_websocket_server('0.0.0.0', 8080);
        #当WebSocket客户端与服务器建立连接并完成握手后会回调此函数
        #$req 是一个Http请求对象,包含了客户端发来的握手请求信息
        $server->on('open'function (swoole_websocket_server $server, $request) {
            $this->server = $server;
            echo "服务器:与客户端握手成功,fd:{$request->fd}\n";
        });
        #调用回复方法
        $this->message($server);
        #调用客户端断开连接事件
        $this->close($server);
        #启动
        $server->start();
    }
 
    #回复客户端消息
    public function message($server)
    {
        #客户端消息
        $server->on('message'function (swoole_websocket_server $server, $frame) {
 
            echo "收到{$frame->fd}:{$frame->data},指令:{$frame->opcode},目的:{$frame->finish}\n";
            #向客户端发送消息
            foreach ($server->connections as $k => $v) {
                echo $v;
                $server->push($v, "{$frame->fd}说:{$frame->data}");
            }
        });
    }
 
    #客户端断开连接
    public function close($server)
    {
        $server->on('close'function ($ser, $fd) {
            echo "客户端:{$fd}下线\n";
        });
    }
 
 
    /**
     * 日志信息写入
     *
     * @param array|bool $logs
     * @return bool|int 写入日志长度
     */
    public function log_write($logs = false)
    {
        if (!$logs) {
            return false;
        else {
            $logs_news = array_merge(array('created_time' => date('Y-m-d H:i:s', time())), $logs);
            unset($logs);
            $file_path = __FILE__ . '/logs/' . date('Ymd') . '.log';
            return file_put_contents($file_path, var_export($logs_news, true) . "\r\n\r\n", FILE_APPEND);
        }
    }
}
 
  
---------------------------------------------------------------------------------------------
唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。