Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有棘轮的PHP WebSocket-示例不';行不通_Javascript_Php_Linux_Websocket_Ratchet - Fatal编程技术网

Javascript 带有棘轮的PHP WebSocket-示例不';行不通

Javascript 带有棘轮的PHP WebSocket-示例不';行不通,javascript,php,linux,websocket,ratchet,Javascript,Php,Linux,Websocket,Ratchet,首先是一些背景知识 我的目标是使用Ratchet WebSocket创建双向客户机-服务器通信 如前所述,我已经安装了ratchet和附带的软件 我已经成功地创建了一个Hello World应用程序,如下所述 现在,我尝试使用教程创建推送功能。我复制了代码,稍微修改了一下(下面的代码注释中提到了修改),安装了ZMQ库(最新版本,添加到php.ini中,显示在php-m-简而言之,它安装正确)。但是WebSocket不起作用 我会给我的测试过程与真正的生活链接到我的域名下面,所以你可以检查它自己

首先是一些背景知识

  • 我的目标是使用Ratchet WebSocket创建双向客户机-服务器通信

  • 如前所述,我已经安装了ratchet和附带的软件

  • 我已经成功地创建了一个Hello World应用程序,如下所述

  • 现在,我尝试使用教程创建推送功能。我复制了代码,稍微修改了一下(下面的代码注释中提到了修改),安装了ZMQ库(最新版本,添加到php.ini中,显示在
    php-m
    -简而言之,它安装正确)。但是WebSocket不起作用

  • 我会给我的测试过程与真正的生活链接到我的域名下面,所以你可以检查它自己

  • 我的推送服务器与他们教程中的完全相同,IP更改为我的服务器的IP。我通过SSH运行这个,它似乎连接正确

  • 我的Pusher类位于MyApp名称空间中,与教程中的代码和相对位置相同

  • My post.php稍作修改,因为不需要处理MySQL查询:

  • 此文件位于

  • 我的client.php与他们的相同,只是我必须为IE添加一个小补丁,以便在.js时使用
    。我的问题与浏览器无关,与添加修复之前的问题相同

  • 然后,
    已建立的连接
    将正确显示在控制台中。因此,我认为我们需要对subscribe方法进行故障排除。如果有人能向我解释它是如何工作的,以及“主题”和“数据”到底应该是什么,那将是非常有帮助的。Autobahn文档使用URL作为此方法的参数(请参阅)。

    您的客户正在
    kittensCategory
    中查找文章,但您正在发送category
    macka
    。试试这个:

    $entryData = array(
        'cat'     => "kittensCategory",
        'title'   => "naslov",
        'article' => "tekst",
        'when'    => time()
    );
    

    端口8080上的主机light-speed-games.com未运行是否正确?如果没有,我建议解决这个问题,因为它可能会导致您的问题。

    谢谢,我会在早上(现在不在家)尝试。这对我来说有点奇怪,我想我不明白。我以为“kittensCategory”只是一个数组项,其中“cat”是键,“kittensCategory”是值。然后它引用
    数据。title
    -这会像预期的那样打印我们的“naslov”吗?它在将“macka”更改为“kittensCategory”后仍然不起作用。你能给我解释一下整个
    conn.subscribe
    功能吗。我不明白。在这种情况下,
    主题
    数据
    是什么?另外,我用一些新的信息编辑了我的问题,部分基于你指出的内容,部分基于我刚刚做的一些研究。很抱歉反应太晚,我不知怎么错过了你的答案。你是说我应该向我的主机提供商询问这个端口是否不工作?从你的计算机执行telnet,以在端口8080上托管light-speed-games.com。您可能会看到与我相同的结果(连接不会建立)。我不知道原因,也不知道你应该联系你的托管公司来解决这个问题(尽管我想你应该:)。因为连接不会建立在这个“低级”测试上,我确实理解为什么你的javascript也不执行它的逻辑->它没有连接。这是有道理的-我今天晚些时候会尝试,让你知道。很抱歉,奖金到期了,因为我要去过年了,但如果这样做有效的话,我至少可以奖励一半的奖金。你说得对,TCP连接的端口关闭了。我尝试用
    iptables-I INPUT-p tcp--dport 8080--syn-j ACCEPT
    打开它,然后是
    service iptables save
    并重新启动Apache,但它似乎仍然关闭。有什么想法吗?顺便说一句,我在5555端口也有同样的想法。但是,像21和22这样的标准端口运行良好。我想知道,如果解决方案是端口未打开,是否应该将其关闭为不可复制。
    <script>
        window.define = function(factory) {    //my addition
            try{ delete window.define; } catch(e){ window.define = void 0; } // IE
            window.when = factory();
        };
        window.define.amd = {};
    </script>
    <script src="/apps/scripts/when.js"></script> 
    <script src="http://autobahn.s3.amazonaws.com/js/autobahn.min.js"></script>
    <script>
        var conn = new ab.Session(
            'ws://light-speed-games.com:8080' // The host (our Ratchet WebSocket server) to connect to
          , function() {            // Once the connection has been established
                conn.subscribe('kittensCategory', function(topic, data) {
                    // This is where you would add the new article to the DOM (beyond the scope of this tutorial)
                    console.log('New article published to category "' + topic + '" : ' + data.title);
                });
            }
          , function() {            // When the connection is closed
                console.warn('WebSocket connection closed');
            }
          , {                       // Additional parameters, we're ignoring the WAMP sub-protocol for older browsers
                'skipSubprotocolCheck': true
            }
        );
    </script>
    
    function() {            // Once the connection has been established
                console.log('Connection established');
                conn.subscribe('kittensCategory', function(topic, data) {
                    // This is where you would add the new article to the DOM (beyond the scope of this tutorial)
                    console.log('New article published to category "' + topic + '" : ' + data.title);
                });
            }
    
    $entryData = array(
        'cat'     => "kittensCategory",
        'title'   => "naslov",
        'article' => "tekst",
        'when'    => time()
    );