2012-04-19 144 views
2

所以我花了一天的时间在socket.io上接受教程,并且由于教程的绝大部分数量不足,我发现自己完全陷入困境。我想使用socket.io将变量发送到PHP页面并检索/显示信息。使用socket.io发送和接收信息(来自PHP文件)

超级简单app.js(socket.io服务器)

var io = require('socket.io').listen(8000); 

io.sockets.on('connection', function (socket) { 
    socket.on('message', function() { }); 
    socket.on('disconnect', function() { }); 
}); 

超级简单socket.io索引页。

<script> 
    var socket = io.connect('http://localhost/'); 
    socket.on('connect', function() { 
    socket.send('hi'); 

    socket.on('message', function (msg) { 
     // my msg 
    }); 
    }); 
</script> 

php文件我想将信息发送到...

<?php 
$hostname = 'localhost'; 
$username = 'root'; 
$password = 'root'; 
$database = 'database'; 
try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->prepare("SELECT * FROM comments WHERE pid = :pid"); 
    $pid = $_GET['pid']; 
    $stmt->bindParam(':pid', $pid, PDO::PARAM_STR); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 
    } 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
    $stmt->execute(); 
    echo $stmt->rowCount(); 
$dbh = null; 
?> 

所以基本上所有我想要做的就是使用的WebSocket我的帖子的ID发送给PHP页面,检索计数,在人们投票时自动更新计数。但我找不到(或弄清楚)如何实现这一点。

任何人都可以在这里熟悉node.js/socket.io,这可以帮我一把手吗?

回答

0

Node.js和你的PHP服务器是两个独立的服务器。你可以做的是从PHP服务器获取HTML文档,并使用socket.io将其发送回客户端。或者可能会根据来自Web套接字的输入重定向页面。

如果你想发送一些数据到客户端(HTML页面,而不是PHP),那么这是socket.io的目的。

你可以做到这一点像这样,

当人们投票,将数据发送到节点服务器(+1)算, 然后广播使用socket.io更新的计票(可能是你可以调用PHP和保存计票也行), 下面是如何调用一个网页(你的PHP服务器)withing您的节点服务器..

http = require('http'); 
var connection = http.createClient(8080, 'yourPhpServer/page'), 

你可以从here

+0

得到更多的想法,所以我不能自动获得投票计数与socket.io?我经常被告知使用socket.io而不是长轮询来获得投票数...... – Ian 2012-04-19 03:29:09

+0

不..你让我错了。将添加更多细节 – 2012-04-19 03:38:33

+0

好吧谢谢你,我开始担心我正在浪费我的时间。 – Ian 2012-04-19 03:43:36