javascript - 套接字代码在Codeigniter Rest API内部不起作用

标签 javascript php sockets websocket

我正在开发codeigniter rest api,同时我需要通过套接字推送一些计数消息,因此我已经使用echo写了js代码(要在php中运行js代码,我们需要echo),但是套接字代码无法正常工作,即在接收方,我没有收到任何消息。
REST API文件中的套接字代码:

     if ($this->db->insert('users', $new_arr)) {
                    echo '<script src="' . base_url("node_modules/socket.io/node_modules/socket.io-client/socket.io.js") . '"></script>';
    echo " var socket = io.connect( 'http://'+window.location.hostname+':3000' )";// open connection at sender
                    echo 'socket.emit("new_count_message", {  // emit message
                      new_count_message: 145
                    })';
                    $response = array('status' => true, 'message' => 'data dded successfully', 'response' => array());
                } else {
                    $response = array('status' => true, 'message' => 'Failed to add data!');
                }
              $this->response($response);
在接收方:
    var socket = io.connect( 'http://'+window.location.hostname+':3000' );// connection open at receiver
     socket.on( 'new_count_message', function( data ) {
     alert(data.new_count_message);
  
      $( "#new_count_message" ).html( data.new_count_message );
   $('#notif_audio')[0].play();

  });

最佳答案

我没有在php中使用socket.io,但是遇到了这个库https://github.com/walkor/phpsocket.io,该库允许您在php中实现socket.io。在“简单聊天”示例之后,应该向您展示如何设置服务器端代码。 api文件中的内容不会打开服务器端连接,而是返回一个从客户端发出数据的网站。因为您没有服务器处理套接字连接,所以它无法将数据传输到其他套接字。在配置了服务器端套接字处理程序之后,当调用API并调用API文件中的代码时,客户端将收到一个包含您已输出信息的网页。在接收到的数据中,您正在连接到套接字并发出数据。然后,该数据将由服务器按照您链接的示例所实现的代码接收,然后将数据发送到您已设置的连接。
或者,为什么不首先发出一条消息,而不是首先进行API调用?这将节省您的网络调用(如果仅通过API调用套接字,则不需要此调用),并且可以使您的应用程序更快。如果不首先了解如何调用API,就很难给出确切的实现细节。

关于javascript - 套接字代码在Codeigniter Rest API内部不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65388749/

相关文章:

java - 需要在Java应用程序和网页之间传递信息

c++ - 带有 C++ TCP 套接字的 CodeSynthesis XML

javascript - 有没有一种方法可以让网站确定它是否正在 iPad 上查看以及是否正在使用 iPhone/Android/Pre 查看

javascript - 让 cufon 在 IE7 和 IE8 中工作 - 我已经根据文档完成了所有工作?

javascript - 服务器发送事件和浏览器限制

javascript - 我如何向现有的 tinyMCE 按钮添加额外的功能?

php - 将 mySQL 插入和更新语句切换为 PDO 准备语句以防止 SQL 注入(inject)

javascript - JQuery Form仅在某些浏览器中提交

php - 为什么我的 RegExp 返回 false 且字符数正确?

c - Linux, C, epoll(), read() 数据不完整?