第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Websockets:從php服務(wù)器向客戶端發(fā)送消息

Websockets:從php服務(wù)器向客戶端發(fā)送消息

PHP
狐的傳說 2023-04-02 14:59:11
我正在嘗試將消息從我的文件 index.php(服務(wù)器)發(fā)送到使用 websockets 連接的客戶端。我創(chuàng)建客戶端連接的 javascript 文件:var websocket_server = new WebSocket("ws://localhost:4950/");websocket_server.onopen = function(e) {  console.log("connected");}websocket_server.onmessage = function(e){  console.log('message received from server');}索引.php:$msg = "Message from server";$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR,1) or die("prbl options\n");socket_connect($sock, '127.0.0.1', 4950) or die("could not connect\n");socket_write($sock, $msg, strlen($msg));客戶端連接到 websocket 是成功的,但是當(dāng)我運行 PHP 文件時,我什么也沒得到(控制臺中沒有錯誤和消息)。換句話說,javascript 不會將我的 socket_write 視為一條消息:/有任何想法嗎?:)
查看完整描述

1 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗 獲得超7個贊

我現(xiàn)在正在使用 SSE 服務(wù)器發(fā)送的事件并且它可以工作!但是我想知道我的代碼是否“正確”或者是否有更“合適”的方法。


我正在使用會話 superglobals 將服務(wù)器信息更改傳遞給另一個文件,該文件不斷將其作為事件流讀?。ㄟ@就是 SSE 的工作方式)。


索引.php:


      <!DOCTYPE html>

      <html dir="ltr">

        <head>

          <meta charset="utf-8">

          <script type="text/javascript" src="jquery.js">

          </script>

          <script type="text/javascript" src="stream.js">

          </script>

        </head>

        <body>

      <a>Receive message</a>

        </body>

      </html>

stream.js(監(jiān)聽服務(wù)器):


var serv = new EventSource("server.php");


  serv.onmessage = function(e) {

      var jdata = JSON.parse(e.data);

      console.log(jdata.message);

  };


  serv.onopen = function(e) {

        console.log('Connection opened');

  }


  $(document).ready(function(){

    $('a').click(function(){

      receive_msg();

    });

  });


  function receive_msg(){

    $.ajax({

     type: "POST",

     url: 'controller.php',

     data: {action: 'send'}

   });

  }

控制器.php:


    <?php

session_start();

if (isset($_POST['action'])) {

  $_SESSION['server']="you have received a message";

}

服務(wù)器.php:


    <?php

session_start();

header('Content-Type: text/event-stream');

header('Cache-Control: no-cache');



if (isset($_SESSION['server'])) {

  $data = array(

      'message'=> $_SESSION['server']

  );

  $data = json_encode($data);

  echo "data: {$data}\n\n";

  unset($_SESSION['server']);

}

它的工作方式:


客戶端連接到 server.php 并不斷讀取文件。當(dāng)服務(wù)器要向客戶端發(fā)送消息時,它會創(chuàng)建一個會話變量。Server.php 讀取變量并將其傳遞到我的 js 文件。然后變量被銷毀,所以我們只傳遞一次消息。


查看完整回答
反對 回復(fù) 2023-04-02
  • 1 回答
  • 0 關(guān)注
  • 262 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號