相关疑难解决方法(0)

什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?

我曾尝试阅读一些文章,但我对这些概念还不是很清楚.

有人愿意尝试向我解释这些技术是什么:

  1. 长轮询
  2. 服务器发送的事件
  3. 的WebSockets
  4. 彗星

我每次遇到的一件事是,服务器保持连接打开并将数据推送到客户端.如何保持连接打开,客户端如何获取推送数据?(客户端如何使用数据,也许某些代码可能会有帮助?)

现在,我应该将其中哪一个用于实时应用.我一直听说很多关于websockets(有socket.io [一个node.js库]),但为什么不用PHP?

php comet long-polling websocket server-sent-events

1005
推荐指数
4
解决办法
17万
查看次数

socket和websocket之间的区别?

我正在构建需要使用套接字连接与另一个应用程序通信的Web应用程序.这对我来说是一个新领域,所以要确保套接字不同于websockets.看起来它们只是在概念上相似.

问起因为我最初计划使用Django作为我的项目的基础,但是在上面链接的SO帖子中,很明显webocket是不可能的(或者至少不可靠,即使像django-websockets这样的东西也是如此)使用首选的Django设置(Apache与mod_wsgi).然而,我发现其他帖子随便导入Python的套接字模块,就像获取服务器的主机名一样简单.

所以:

  • 他们真的不一样吗?
  • 是否有任何理由不将Django用于依赖于与外部服务器建立套接字连接的项目?

sockets mod-wsgi websocket

146
推荐指数
6
解决办法
9万
查看次数

如何在PHP中创建websockets服务器

是否有任何教程或指南显示如何在PHP中编写一个简单的websockets服务器?我试过在谷歌上寻找它,但我找不到很多.我发现phpwebsockets但它现在已经过时,不支持最新的协议.我自己尝试更新它,但它似乎不起作用.

#!/php -q
<?php  /*  >php -q server.php  */

error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

$master  = WebSocket("localhost",12345);
$sockets = array($master);
$users   = array();
$debug   = false;

while(true){
  $changed = $sockets;
  socket_select($changed,$write=NULL,$except=NULL,NULL);
  foreach($changed as $socket){
    if($socket==$master){
      $client=socket_accept($master);
      if($client<0){ console("socket_accept() failed"); continue; }
      else{ connect($client); }
    }
    else{
      $bytes = @socket_recv($socket,$buffer,2048,0);
      if($bytes==0){ disconnect($socket); }
      else{
        $user = getuserbysocket($socket);
        if(!$user->handshake){ dohandshake($user,$buffer); }
        else{ process($user,$buffer); }
      }
    }
  }
}

//---------------------------------------------------------------
function process($user,$msg){
  $action = unwrap($msg);
  say("< ".$action);
  switch($action){
    case "hello" : send($user->socket,"hello human");                       break;
    case …
Run Code Online (Sandbox Code Playgroud)

javascript php websocket

75
推荐指数
4
解决办法
15万
查看次数

Ajax推送系统

在我自己的系统中,我有一个PHP页面显示我通过我的在线网上销售的所有商品,从最新的交易到第一个.

每当人们从我这里买东西时,我希望这个页面自动更新.

我可以AJAX每隔5秒拨打一次电话来检查我的数据库中的订单,但这似乎是1980年?还是人们这样做?

每当调用我的php newOrder()函数(让我们调用它)时,我怎样才能通知送到我的php页面?

php ajax push

15
推荐指数
1
解决办法
2万
查看次数

PHP应用程序+基于WebSocket的Socket.IO通知

我有一个使用laravel用PHP编写的Web应用程序.

现在,我必须添加实时通知系统,从服务器 - >客户端推送消息,并可以检索从客户端 - >服务器推送的消息.

由于Socket.IO向后兼容并且优雅地降级,我想将它用于WebSocket/AJAX轮询部分.

问题是Socket.IO默认使用Node.JS后端.

我有root访问服务器,并行运行(Apache和Node)没有问题或添加任何额外的东西.

问题是,如何从PHP向Node + Sockets.IO发送消息?

然后,如何将消息从Sockets.IO + Node传输到PHP?

我已经将Node + Sockets留给了浏览器部分,因为这非常简单.

我见过使用Express.js + CURL和/或POST请求的例子,但是,是不是有更低级别的方法呢?

我知道DNode + PHP,但我无法想象如何组装所有东西 - Apache,PHP,Node,Socket.IO,DNode,因此它可以无缝地协同工作.

此外,我已经转换为这个PHP WebSockets服务器实现的laravel库.但是,这个库的问题在于它为客户端使用干净的WebSockets.而且,我找不到与Socket.IO客户端一起破解它的方法.

php apache websocket node.js socket.io

15
推荐指数
1
解决办法
2万
查看次数

如何从 php 或 node.js 获取 websocket url 路径

我的html代码

var url='ws://localhost:8000/abc';
  socket=new WebSocket(url);
  socket.onopen=function(){
    log('Success');
  }
Run Code Online (Sandbox Code Playgroud)

在 php 或 node.js 中如何获取 url 路径abc

javascript php node.js

3
推荐指数
2
解决办法
6076
查看次数