Ich möchte Socket.io und Knoten als Layer für meine "Push-Benachrichtigung Feature" verwenden, so dass ich sowohl Apache und Knoten ausführen.Wie sende ich Nachrichten mit socket.io
Ich habe den folgenden Code auf meinem Server (Knoten)
var app = require('http').createServer(handler)
, io = require('C:/path/to/file/socket.io').listen(app)
, fs = require('fs');
app.listen(8080);
function handler(req, res) {
console.log(req);
fs.readFile('C:/path/to/file/index.html',
function (err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.on('my event', function (msg) {
console.log("DATA!!!");
});
});
die Seite dann von Apache von localhost ohne Port 8080
und auf dem Client Ich habe den folgenden Code serviert:
var socket = io.connect('http://localhost:8080');
und wenn eine Schaltfläche geklickt wird:
socket.emit('my event', {data:"some data"});
Ich sehe nichts auf der Node-Konsole ... warum ist das? Übergreifendes Problem?
Update: es auf Safari 5.1.5 funktioniert gut und sogar IE 9, aber nicht auf Chrom (18.0.1025.151) oder Firefox (11,0) ... Was bin ich dabei?
hier ist der Knoten Protokoll:
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 4944162402088095824
debug - setting request GET /socket.io/1/websocket/4944162402088095824
debug - set heartbeat interval for client 4944162402088095824
debug - client authorized for
debug - websocket writing 1::
debug - setting request GET /socket.io/1/xhr-polling/4944162402088095824?t=13
33977095905
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 4944162402088095824
Danke für die Antwort! Offensichtlich ist mein Problem lokal, Ihr Beispiel funktioniert gut auf Safari und IE, aber nicht auf meinem Chrome oder Firefox ... wo soll ich hinschauen? PS: Ich bin mit WebRTC rum, so dass diese Funktion auf meinem Chrom aktiviert ist ("Enable MediaStream. Mac, Windows, Linux, Chrome OS MediaStream aktivieren, GetUserMedia und PeerConnection APIs für WebRTC-Funktionalität. Weitere Informationen auf webrtc.org . ") versuchte, es ohne Erfolg zu deaktivieren ... irgendeine andere Idee? –
versuchte Chrome neu zu installieren ... nein gehen :( Weitere Informationen: Ich bin Knoten auf Windows 7 ausgeführt, und ich verwende den vollständigen Pfad zu socket.io wie folgt "C: \ Users \ shlomis \ node_modules \ socket.io "(Konnte es nicht herausfinden) ... könnte das zusammenhängen? –
Das ist seltsam ... versuchen Sie, Chrome-Entwickler-Tools oder Firebug auf Firefox zu öffnen, und öffnen Sie die Registerkarte" net ", könnte es Ihnen mehr Informationen geben über was passiert unter der Haube –