2017-11-21 12 views
-1

私はphpとsocket.ioを自分のサイトで使いたいので、socket.ioを使ってphp型のファイルに接続しようとしていますが、これを試してみてください(下記のコードを参照)。 私はローカルホストに入力します:3000ダウンロードが自動的にダウンロードされると呼ばれるファイルを..どのようにsocket.ioをPHPファイルに接続しますか?

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を構築したいですlogin/users systemとsocket.ioは私のサイトにwebsoketsを持っています。

私はphpが(XAMPP)のような何らかのサーバを使用しなければならないことを知っていますが、XAMPPをオンにしたときはPHPが役に立ちません。

+0

Socket.ioまたはexpressはPHPコードを実行できません。これを行うにはapacheのような別のPHP対応Webサーバーが必要です。それはあなたが別のポートであなたのPHPアプリケーションに接続することを意味します – apokryfos

答えて

1

PHPはWebサーバー(独自の内部ソケット)で実行する必要がありますが、socket.ioはソケット実装自体を作成します。

したがって、通常のPHPファイルはWebサーバー上で実行する必要があります(また、Webサイトのログイン/登録/ ...を提供する必要があります)。また、socket.ioで何かをPHPで生成する場合は、 PHP側からノードアプリケーションへ。

この接続にはさまざまな方法があります。 1つの方法は、Redisを使用してメッセージングシステムを作成することです。 PHPはredisで共有バッファにメッセージを投稿することができ、nodejsサーバは常にメッセージを引き出してsocket.io経由でディスパッチします。

チェックこのライブラリー:https://github.com/rase-/socket.io-php-emitter

それがどのPHPの介入を必要としなくてもよいように、あなたはまた、完全にnodejs側にソケットロジックを移動させることができます。

+0

しかし、私はwebscoketでPHPに接続できますか? – Ramptor

+0

PHPの別のソケット経由でsocket.ioサーバーに接続することはできますが、非常に多くの人にメッセージをたくさん配信する場合は効率的ではありません。この簡単な例を見てみましょう:https://github.com/psinetron/PHP_SocketIO_Client –

+0

私はこのチュートリアルを見ました - https://github.com/jdutheil/nodePHPしかし、nodeClientのIOがdefindではないというエラーがあります。 .. – Ramptor

関連する問題