我可以将websocket连接到本地计算机上的服务器。但是当我将文件上传到远程ubuntu服务器时,它不再起作用了。
服务器端代码(server.php):
$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($master, "127.0.0.1", 80);
socket_listen($master, 20);
客户端代码:
<script type="text/javascript">
var host = "ws://127.0.0.1:80/server.php";
socket = new WebSocket(host);
</script>
我从chrome canary版本24打开客户端页面,服务器端没有得到任何接受的套接字。
我将主机更改为“ws://xx.xx.xx.xx:80 / server.php”到服务器的真实IP地址,不起作用。还将服务器端socket_bind($ master,“127.0.0.1”,80)更改为真正的ip,也没有运气。
任何人都可以帮助我?
谢谢,
茉莉
答案 0 :(得分:0)
我的朋友,当你写服务器时。您需要将其作为服务运行或保持运行。 在php服务器的情况下,你需要从PHP Cli(php yourfile.php)运行该文件,而不是从浏览器运行(你可以,将超时设置为0,但如果你关闭浏览器,你的服务器就会停止工作)。 我真的不建议使用PHP的套接字服务器。阅读有关使用C ++(QT,Berkeley)或Java Socket Servers的套接字服务器的更多信息。
当我们谈论HTML5 Websockets服务器时,它与编写“普通”套接字服务器不同(PHP有很多可以帮助您编写HTML5 Websocket服务器的库)
https://github.com/Flynsarmy/PHPWebSocket-Chat
在该链接中,您可以找到聊天的示例。有一个名为class.PHPWebSocket.php的文件,将其包含在server.php中,并使用该库创建HTML5 Websocket服务器。请参阅示例,了解它的工作原理以及如何使用class.PHPWebSocket.php(请查看示例中的server.php文件)。
完成后运行服务器。
然后做:
// ...
var host = "ws://IP.OF.THE.SERVER:port";
socket = new WebSocket(host);
// ...
阅读有关套接字服务器,HTML5 Websockets的更多信息,并查看该class.PHPWebSocket.php实用程序。 祝你好运。