javascript – 带棘轮的PHP WebSockets – 示例不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 带棘轮的PHP WebSockets – 示例不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3478字,纯文字阅读大概需要5分钟。
内容图文
这是一些背景知识.
>我的目标是使用Ratchet WebSockets创建双向客户端 – 服务器通信.
>我已经安装了棘轮和附带的软件,如here所述.
>我已成功创建了一个Hello World应用程序,如here所述.
>现在我正在尝试使用this教程创建Push功能.我已复制代码,稍微修改它(下面的代码注释中记录的修改),安装了ZMQ库(最新版本,将其添加到php.ini,显示在php -m中 – 简而言之,它已正确安装).但WebSockets不起作用.
我将在下面的测试过程中提供真实的实时链接,以便您自行查看.
>我的推送服务器与他们教程中的推送服务器完全相同,IP已更改为我服务器的IP.我通过SSH运行它,它似乎正确连接.
>我的Pusher类位于MyApp命名空间中,与教程中的代码和位置相同.
>我的post.php略有修改,因为没有必要打扰MySQL查询:
$entryData = array( //hard-coded content of $entryData for simplicity
'cat' => "macka"
, 'title' => "naslov"
, 'article' => "tekst"
, 'when' => time()
);
// This is our new stuff
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://light-speed-games.com:5555"); //my domain, still using port 5555 as in their example
$socket->send(json_encode($entryData));
此文件位于here.
>我的client.php与他们的相同,除了我必须为IE添加一些修复以使用when.js.我的问题与浏览器无关,与添加修复程序之前的问题相同.
<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>
此文件位于here.
从理论上讲,应该发生的事情(例如):我在??Chrome中打开client.php并打开控制台;然后我在Firefox中打开post.php; Chrome的控制台应显示消息“发布新文章…”等(来自client.php中的conn.subscribe函数).但是,当我这样做时,没有任何反应.连接保持打开状态(直到我通过SSH关闭push-server.php才显示“连接已关闭”错误).控制台仍然是空的.
我认为这是过去几天的所有相关信息,其中很大一部分用于试图解决这个问题.但是,我甚至无法确定问题是否与代码或某些服务器配置设置有关,我可能不知道.所以,我来找你,希望有人能指出我正确的方向.
重要的编辑
我很确定问题出在Autobahn.js方法conn.subscribe无法正常工作.正在建立联系.当我将代码更改为:
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);
});
}
然后建立连接正确显示在控制台中.所以我认为我们需要对subscribe方法进行故障排除.如果有人可以向我解释它是如何工作的,以及究竟应该是什么“主题”和“数据”,那将会有很大的帮助. Autobahn文档使用URL作为此方法的参数(参见here).
解决方法:
在端口8080上看到主机light-speed-games.com无法正常工作是否正确?如果没有,我建议修复此问题,因为它可能会导致您的问题.
内容总结
以上是互联网集市为您收集整理的javascript – 带棘轮的PHP WebSockets – 示例不起作用全部内容,希望文章能够帮你解决javascript – 带棘轮的PHP WebSockets – 示例不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。