我在PHP中创建了一个客户端服务器聊天应用程序。它使用套接字编程进行通信。它在我的Fedora使用终端上工作正常。但我需要在服务器中主持聊天。但我没有任何服务器,所以我使用免费托管网站(使用cPanel)。
有没有办法在免费的Web服务器上运行套接字编程的聊天服务器而无法访问其终端?
答案 0 :(得分:2)
大多数免费主机不允许使用像socket,curl这样的php模块。
当你想通过http获取一些网址时,其中许多人禁止使用像file_get_contents和fopen这样的函数 - 实际上它仍在使用套接字。
另外,如果我们谈论聊天服务器,您需要侦听某些特定端口上的连接,并且更有可能禁止自定义入站连接。
此类安全功能的一个原因是不允许人们使用免费托管网络资源,设置不同的抓取工具,垃圾邮件海报等。
最好让自己获得一些便宜的VPS,因为即使付费的虚拟主机方案通常也会受到与上述规则相同的限制。
答案 1 :(得分:1)
如果您无权访问任何外部服务器资源,则可以使用轮询技术。如果没有通过websockets或使用flash的连接方法,Socket.IO可以回退使用XMLHttpRequest轮询。
例如,在客户端上,您可以设置选项:
io.set('polling duration', 5);
这将导致Socket.IO在内部每5秒执行一次AJAX请求。在服务器端,您需要使用elephant.io之类的内容。不幸的是,如果不必推出自己的服务器端解决方案,似乎没有很多替代方案。
由于PHP脚本不会在后端不断运行,因此您需要设计一些机制来跟踪用户状态。这可能相当复杂,但如果您只是出于学习目的,可以将其存储在数据库中的用户会话中,或者存储在客户端。每当从客户端发出请求时,您将查询数据库以检索用户会话,然后使用Socket.IO方法从那里开始。
答案 2 :(得分:0)
我刚刚制作了我的本地机器,服务器通过端口转发调制解调器并采用dynamic-dns技术跟进用户的IP地址,最后在用户之间创建了点对点连接以启用聊天。
问题在没有使用免费托管网站的情况下解决了!!!