php socket服务器在localhost上运行,但在实时服务器上运行

时间:2012-10-04 08:14:33

标签: php apache2 websocket

我正在使用wamp服务器WAMPServer2.0在我的开发窗口7上使用PHP WebSocket Server 0.2(http://code.google.com/p/php-websocket-server/)。

  1. 我没有安装/激活任何Apache模块。
  2. 刚刚为php启动了php_sockets扩展。
  3. 我的套接字服务器在局域网上使用localhost和LAN IP地址正常工作但是当我在我的实时服务器上使用相同的设置实现相同的代码时,它不起作用。

    在实时服务器上

    1. 执行“php socket-server.php”后没有错误。
    2. 但是当我尝试使用javascript连接到套接字服务器时,它没有连接。
    3. 我的实时服务器是CENTOS 5.8,Apache / 2.2.20,PHP / 5.2.17。

      我做错了什么? Apache需要一些额外的模块吗?

      - 编辑 -

      现在联系支持启用端口9300后,但客户端无法连接到服务器。

      但是在服务器端我有一些活动,根据脚本,客户端连接后就会断开连接。

      enter image description here

      - 编辑 -

      相同的脚本在vmware上http://www.turnkeylinux.org/lampstack正常工作。

2 个答案:

答案 0 :(得分:0)

看看答案很简单

Javascript / Ajax安全性不支持跨域连接

请注意:如果您的服务器位于http://myserver.com并且您的脚本在http://myserver.com:9300上运行,那么javascript将会理解这是一个不同的域。

如果您愿意,请执行以下操作:

1 - 使用apache创建http-proxy,将“/ live”转发到http://servers.com:9300 2 - 然后将您的javascript连接到/ live,apache代理将完成这项工作。

如果你仍然坚持创建代理,那么搜索“apfire proxy pass for openfire”,你就会找到一个很好的例子。

请注意,您需要root访问权限,或者您可以要求您的主机管理员为您添加此代理转发。

答案 1 :(得分:0)

尝试使用curl或具有最高详细级别的ncat从命令行连接到websocket服务器。如果一切正常,我的意思是,你收到升级标题,而不是防火墙中的问题。

您还可以使用nmap,它可以帮助您确定是否有任何打开的端口在您尝试打开websocket连接的范围内。

同样在生产环境中,您应该将错误报告级别设置为E_NONE。

BTW,您有哪种实时服务器(VPS / VDS,专用等)?