2012-04-19 138 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