在共享托管中使用的websockets是否有其他选择

问题描述 投票:4回答:3

Websockets是否可以用于共享托管?我知道node.js,socket.io,Express.js,但无法在共享托管中使用它们。因此,如果有其他替代方法可用于创建实时网站,请告诉我。

javascript php ajax real-time
3个回答
1
投票

如果您的共享主机提供PHP支持,则可以使用PHP中的WebSockets库之一:

要安装棘轮,请阅读我在how to install Composer on a shared hosting上的答案。

或者,您可以使用我的项目Node.php在共享主机上安装Node.js。


3
投票

您可以考虑使用托管的实时网络(例如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


0
投票

[我认为“服务器发送事件”是一个很好的选择,但这是一种方法,但我认为在大多数情况下,Websockets更好,因为它不需要任何特殊的服务器或库就可以更容易地设置,并且不需要遵循其他协议,仅来自echo中的phponmessage中的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();
?>
© www.soinside.com 2019 - 2024. All rights reserved.