Websockets是否可以用于共享托管?我知道node.js,socket.io,Express.js,但无法在共享托管中使用它们。因此,如果有其他替代方法可用于创建实时网站,请告诉我。
如果您的共享主机提供PHP支持,则可以使用PHP中的WebSockets库之一:
要安装棘轮,请阅读我在how to install Composer on a shared hosting上的答案。
或者,您可以使用我的项目Node.php在共享主机上安装Node.js。
您可以考虑使用托管的实时网络(例如PubNub)在共享托管上进行实时通信。使用托管的实时解决方案(如PubNub)意味着您无需担心开放端口或持久性进程。
[完整的hello world教程可帮助您在以下PubNub博客上开始使用:http://www.pubnub.com/blog/php-push-api-walkthrough/
下面是一个简单的例子。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9jRkFzTy5wbmcifQ==” alt =“在此处输入图像描述”>
让我们来看看开发人员如何在PHP之间创建渠道和JavaScript。实时的最常见使用模式首先将说明应用程序。 JavaScript浏览器(例如Firefox)将通过以下方式订阅并收听消息PUBNUB.subscribe()。然后,PHP将使用$ pubnub.publish()。
PUBNUB.subscribe( { channel : 'my_test_channel' }, function(message) { if ('some_text' in message) { alert(message.some_text); }} );
以上JavaScript与跨浏览器完全兼容。该代码将收听发布在“ my_test_channel”频道上的消息。当一个消息,JavaScript将验证“ some_text”是否存在于消息对象中。如果此属性存在,则显示一个警报框!
现在使用PHP发布消息以调用JavaScript Alert框。
## Publish Messages To a JavaScript Browser $pubnub = new Pubnub( 'publish_key', 'subscribe_key' ); $pubnub->publish(array( 'channel' => 'my_test_channel', 'message' => array( 'some_text' => 'hello!' ) ));
此PHP代码将向JavaScript浏览器发送一条消息,以监听“ my_test_channel”频道。当此PHP代码执行时,一个JavaScript浏览器将收到PHP数组,并显示以下警告消息‘你好!’。
http://www.pubnub.com/blog/php-push-api-walkthrough/#sthash.jI8zntnL.dpuf
[我认为“服务器发送事件”是一个很好的选择,但这是一种方法,但我认为在大多数情况下,Websockets更好,因为它不需要任何特殊的服务器或库就可以更容易地设置,并且不需要遵循其他协议,仅来自echo
中的php
和onmessage
中的javascript
。
快速示例(来自https://www.w3schools.com/html/html5_serversentevents.asp):
Javascript:
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
PHP:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>