2

I could connect websocket to the server on my local machine. But when i uploaded the file to a remote ubuntu server, it doesn't work any more.

Server side code(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);

client side code:

<script type="text/javascript">
var host = "ws://127.0.0.1:80/server.php";
socket = new WebSocket(host);
</script>

I open the client page from chrome canary version 24, server side didn't get any accepted socket.

I changed the host to "ws://xx.xx.xx.xx:80/server.php" to the real IP address of the server, doesn't work. Also changed the server side socket_bind($master, "127.0.0.1", 80) to real ip, no luck either.

Any one can help me?

Thanks,

Jasmine

4

1 回答 1

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 实用程序。祝你好运,我的朋友。

于 2012-10-31T15:37:00.130 回答