【问题标题】:How connect socket.io to php file?如何将 socket.io 连接到 php 文件?
【发布时间】:2018-05-04 16:16:18
【问题描述】:

我尝试使用 socket.io 连接到 php 类型的文件,因为我想在我的站点中使用 php 和 socket.io,但是如果我尝试这样做(请参见下面的代码)。 当我进入 localhost:3000 时,会自动下载一个名为 download 的文件。

var express = require("express");
var app = express();
var server = require("http").createServer(app);
var io = require("socket.io").listen(server);

users = [];
connections = [];

server.listen(process.env.PORT || 3000);
console.log("Server running...")

app.get('/', function(req, res){
    res.sendFile(__dirname + "/index.php");
});

io.sockets.on("connection", function(socket)
{
    connections.push(socket);
    console.log("Connected: %s sockets connected.", connections.length);

    //Disconnect
    socket.on("disconnect", function(data)
    {
        connections.splice(connections.indexOf(socket), 1);
        console.log("Disconnected: %s sockets connected.", 
        connections.length);
    });
});

我真的需要帮助,因为我不知道自己做错了什么...... 我希望 php 构建登录/用户系统和 socket.io,以便在我的站点中拥有 websoket 来制作东西。

我知道 php 必须使用某种服务器,例如 (XAMPP),但是当我打开 XAMPP 时它没有帮助。

【问题讨论】:

  • Socket.io 或 express 无法运行 PHP 代码,您需要一个单独的支持 PHP 的网络服务器(如 apache)来执行此操作。这意味着您将在不同的端口连接到您的 PHP 应用程序

标签: javascript php node.js sockets socket.io


【解决方案1】:

PHP 应该在 Web 服务器上运行(具有自己的内部套接字),而 socket.io 自己创建一个套接字实现。

所以常规的 PHP 文件应该在 Web 服务器上运行(并为您的网站提供登录/注册/...),如果您想用 PHP 在 socket.io 生成的套接字上写一些东西,那么您必须以某种方式连接您的 PHP节点应用程序的一侧。

有很多方法可以建立这种联系。一种方法是使用 Redis 创建消息传递系统。 PHP 可以将消息发布到 redis 中的共享缓冲区,nodejs 服务器会不断拉取消息并通过 socket.io 分发它们。

检查这个库:https://github.com/rase-/socket.io-php-emitter

您也可以将套接字逻辑完全移动到 nodejs 端,这样就不需要任何 PHP 干预。

【讨论】:

  • 好的,但是我可以将 php 与 webscoket 连接起来吗?
  • 您可以通过 PHP 中的另一个套接字连接到 socket.io 服务器,但如果您要向这么多人广播大量消息,那将不是一种有效的方式。看看这个简单的例子:github.com/psinetron/PHP_SocketIO_Client
  • 我看过这个教程 - github.com/jdutheil/nodePHP 但是我有一个错误,nodeClient 中的 IO 未定义...
  • 你可以在 git 上打开一个问题。一定是缺少 require 语句或拼写错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多