2012-10-31 453 views
2

我可以将websocket连接到本地计算机上的服务器。但是当我将文件上传到远程Ubuntu服务器时,它不再工作。websocket未连接

服务器端代码(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

你看到了哪些错误信息? – itsbruce

回答

0

我的朋友,当你写你的服务器。您需要保持它作为服务运行或者保持运行。 对于PHP服务器,您需要从PHP Cli(php yourfile.php)运行该文件,而不是从浏览器(您可以将超时设置为0,但如果关闭浏览器,则服务器停止加工)。 我真的不建议通过PHP的套接字服务器。阅读有关使用C++(QT,Berkeley)或Java Socket服务器的套接字服务器的更多信息。

当我们在谈论HTML5 WebSockets的服务器,它是从编程“正常”套接字服务器不同(有PHP的,可以帮助你编程HTML5的WebSocket服务器很多库)

https://github.com/Flynsarmy/PHPWebSocket-Chat

在该链接中,您可以找到聊天的示例。有一个名为class.PHPWebSocket.php的文件,将其包含在server.php中,并使用该库创建HTML5 WebSocket Server。查看示例,了解它是如何工作的以及如何使用该类.PHPWebSocket.php(查看示例中的server.php文件)。

完成后运行服务器。

然后做:

// ... 
var host = "ws://IP.OF.THE.SERVER:port"; 
socket = new WebSocket(host); 
// ... 

了解更多关于插槽服务器,HTML5的WebSockets,并看看那个class.PHPWebSocket.php效用。 好运我的朋友。

+0

此外,请检查服务器的IP地址,对服务器执行ping操作,并查看该IP:Port/** SERVER.PHP ** – Spamdark

+0

感谢您的帮助。我使用的服务器代码只是从phpwebsocket代码复制而来。而且我确实通过php server.php让服务器端在那里运行。问题是$ client = socket_accept($ master);这行没有得到任何套接字。它在我的本地计算机上工作。 – Jasmine

+0

检查连接,也许客户端没有与服务器连接,执行:socket.onclose和socket.onerror在JavaScript,并看看发生了什么那里。 – Spamdark