【问题标题】:Socket Programming Cross Platform (PHP & Javascript)跨平台套接字编程 (PHP & Javascript)
【发布时间】:2016-07-06 00:03:07
【问题描述】:

我用PHP创建了一个socket服务器,代码是这样的

PHP

function listen()
{
// set some variables
    $host = "127.0.0.1";
    $port = 25003;
// don't timeout!
    set_time_limit(0);
// create socket
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// bind socket to port
    $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
    $result = socket_listen($socket, 3) or die("Could not set up socket listener\n");

// accept incoming connections
// spawn another socket to handle communication
    $spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
// read client input
    $input = socket_read($spawn, 1024) or die("Could not read input\n");
// clean up input string
    $input = trim($input);
    echo "Client Message : " . $input."\n";
// reverse client input and send back
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen($output)) or die("Could not write output\n");
// close sockets
    socket_close($spawn);
    socket_close($socket);
    listen();
}

set_time_limit(0);
listen();

取自http://www.codeproject.com/Tips/418814/Socket-Programming-in-PHP

我使用 Javascript 创建客户端套接字,像这样

Javascript

<!DOCTYPE HTML>
<html>
<head>
    <script type="text/javascript">
        function WebSocketTest()
        {
            if ("WebSocket" in window)
            {
                alert("WebSocket is supported by your Browser!");

                // Let us open a web socket
                var ws = new WebSocket("ws://localhost:25003");

                ws.onopen = function()
                {
                    // Web Socket is connected, send data using send()
                    ws.send("Message to send");
                    alert("Message is sent...");
                };

                ws.onmessage = function (evt)
                {
                    var received_msg = evt.data;
                    alert("Message is received...");
                };

                ws.onclose = function()
                {
                    // websocket is closed.
                    alert("Connection is closed...");
                };
            }

            else
            {
                // The browser doesn't support WebSocket
                alert("WebSocket NOT supported by your Browser!");
            }
        }
    </script>
</head>
<body>

<div id="sse">
    <a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>

</body>
</html>

然后我运行 PHP 服务器,它在工作,它在监听。 我运行 Javascript 客户端,它工作正常,PHP 服务器正在接收来自 Javascript 的请求。

但是 PHP 的响应是这样的

我不明白如何更改客户端消息,假设我想像“Hello”一样发送消息, 1.我怎样才能从javascript调用它,以便PHP服务器只接收“Hello”? 2. 谁能给我解释一下这样的每个url的作用是什么?

ws://localhost:25003/daemon.php

第二个参数是什么?这是连接到我的 php 文件吗?因为我试图定位到我的 php 它不起作用。

【问题讨论】:

    标签: javascript php sockets


    【解决方案1】:

    PHP Socket 服务器没问题,问题是 Javascript,它正在发送一个 HTTP 请求,而这个发送是一个 HTTP 协议。

    您可以在该端口上启动 PHP Web 服务器并回答 Ajax 查询时的请求。

    像 Web 服务器一样启动 php 的命令行

    php -S 127.0.0.1:25003
    

    WebServer 的文档根目录与 PHP 相同

    【讨论】:

    • 我已经启动了php,但是如何从js创建请求?我的网络套接字初始化是否正确?喜欢这个new WebSocket("ws://localhost:25003/server.php");
    • 如果你想测试和学习 WebSockets,也许你需要像这样的 socketo.me/docs,Misyaath Mohammed 的回复有一个有用的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多