2017-11-21 14 views
-1

나는 내 사이트에서 php와 socket.io를 사용하고 싶기 때문에 socket.io로 php type 파일에 연결하려고한다.하지만 이것을 시도하면 (아래 코드 참조). 나는 localhost로 입력하면 : 나는 PHP가를 구축하고자어떻게 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); 
    }); 
}); 

나는 내가 잘못 알고하지 않기 때문에 정말 도움이 필요합니다 ... 다운로드라는 파일이 자동으로 다운로드되는 3000 .. 로그인/사용자 시스템 및 socket.io 내 사이트에 물건을 만들기 위해 websokets을 가지고 있습니다.

PHP는 (XAMPP)와 같은 종류의 서버를 사용해야하지만 XAMPP를 켜면 도움이되지 않습니다.

+0

Socket.io 또는 express는 PHP 코드를 실행할 수 없으므로 apache와 같은 별도의 PHP 가능 웹 서버가 필요합니다. 그것은 당신이 다른 포트에 PHP 응용 프로그램에 연결한다는 것을 의미합니다 – apokryfos

답변

1

PHP는 웹 서버 (자체 내부 소켓 포함)에서 실행되어야하지만 socket.io는 자체 소켓 구현을 생성해야합니다.

일반 PHP 파일은 웹 서버에서 실행되어야하며 (웹 사이트 로그인/등록/... 서비스를 제공해야합니다), socket.io에서 PHP로 소켓을 생성하려면 무언가를 노드 애플 리케이션에 PHP 쪽.

해당 연결을 만드는 방법은 여러 가지가 있습니다. 한 가지 방법은 Redis를 사용하여 메시징 시스템을 만드는 것입니다. PHP는 redis로 공유 버퍼에 메시지를 게시 할 수 있으며 nodejs 서버는 지속적으로 메시지를 가져 와서 socket.io를 통해 메시지를 전달합니다.

확인이 도서관은 : 그것은 어떤 PHP의 개입을 필요로하지 수 있도록 https://github.com/rase-/socket.io-php-emitter

또한 완전히 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