Javascript中是否有任何「globals」函數,它與本例中應用的PHP全局變量類似?JavaScript Globals和Socket.io
var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
fs = require('fs'),
querystring = require('querystring');
app.listen(8000);
var content = '';
function handler(req, res) {
io.sockets.on('connection', function (socket) {
if(req.method == 'POST') {
var fullBody = '';
req.on('data', function(chunk) {
fullBody += chunk.toString();
});
req.on('end', function() {
var decodedBody = querystring.parse(fullBody);
console.log(decodedBody);
socket.emit('user-aaa5c8bbffe4db9', fullBody);
});
}
});
fs.readFile(__dirname + '/index.html',
function(err, data) {
if(err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
我寫了一個PHP應用程序,但我想有過socket.io通知,但我不想重新編寫的Node.js(還)的應用程序,所以我建立一個節點服務器,PHP的會派POST,然後服務器將通過Socket.io發送通知。我用基本腳本測試了服務器,他們確實有效。我也試着移動「io.sockets.on(‘連接’,函數(插座){」 IF語句裏面:
req.on('end', function() {
var decodedBody = querystring.parse(fullBody);
console.log(decodedBody);
io.sockets.on('connection', function (socket) {
socket.emit('user-aaa5c8bbffe4db9', fullBody);
});
});
但是這並沒有產生「即時」的結果,通知會來在一個頁面刷新後,客戶端
客戶端是一個簡單的:
socket.on('user-<?php echo $_SESSION['user_display_id']; ?>', function (data) {
alert(data);
$('#events').html(data);
});
任何幫助,將不勝感激
快速的問題 - 你使用什麼網頁瀏覽和版本的Socket.IO?如果您使用的是Chrome,您可能會因[此錯誤](https://github.com/LearnBoost/socket.io/issues/429)而受到影響。 Socket.IO的調試輸出應該顯示更多信息。 –