Sto cercando di capire cosa c'è di sbagliato con il mio codice/impostazioni per un po 'di tempo. Fondamentalmente voglio inviare un messaggio dal client al server . Il seguente funziona in tutti i browser eccetto FF (11) e cromato (18.0.1025.152 m).Socket.io non riesce a inviare messaggi al server Node su Chrome & Firefox
Ecco alcune informazioni:
- corro Node.js su Windows 7 Enterprise computer a 64 bit
- ho utilizzare Apache per servire la pagina dal localhost
- sto in ascolto sulla porta 8080 con socket.io
- sembra Chrome e FF fallback a XHR-polling/jsonp-polling invece di utilizzare i socket
- posso spingere i messaggi dal server, ma non può emettere dal client 012.351.
codice del server:
var io = require('C:/Users/shlomis/node_modules/socket.io/lib/socket.io').listen(8080);
io.sockets.on('connection', function (socket) {
socket.on('my event', function (msg) {
console.log("DATA!!!");
});
});
non riuscivo a trovare un modo per richiedere, senza un percorso completo
Codice cliente:
versioni<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello World!</title>
<meta charset="utf-8">
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var socket = io.connect('http://localhost:8080');
$("#button").click(function() {
socket.emit('my event' ,"Hello World!");
})
})
</script>
</head>
<body>
<button type="button" id='button'>Send Message</button>
</body>
</html>
Moduli:
C:\Users\shlomis>npm ls
[email protected] C:\Users\shlomis
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
├── [email protected]
└─┬ [email protected]
├─┬ [email protected]
│ └── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
└── [email protected]
log
Node:
C:\Users\shlomis>node C:\dev\wamp\www\AR\js\videoServer.js
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 17502185141066845391
debug - setting request GET /socket.io/1/websocket/17502185141066845391
debug - set heartbeat interval for client 17502185141066845391
debug - client authorized for
debug - websocket writing 1::
debug - setting request GET /socket.io/1/xhr-polling/17502185141066845391?t=1334041653716
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 17502185141066845391
richiesta cromato WS (101 Protocolli di commutazione):
richiesta cromo XHR:
Aggiornamento: Iv'e aggiunto
socket.on('connect', function() {
console.log("connected");
});
Non si accende mai sul cromo.
Quindi cosa potrebbe essere sbagliato? per favore aiutatemi :)
Ho esattamente lo stesso problema ... socket.emit ('hello') sul client funziona in safari, ma non in firefox o chrome ... Limitazione di sicurezza forse? O forse un bug socket.io. –
Potrebbe essere la politica 'same-origin', poiché l'errore si verifica solo quando XHR viene utilizzato? Prova a creare un semplice XHR su localhost: pagina diversa dalla porta del servizio, vedi se ottieni qualche eccezione di sicurezza. –
NESSUN problema di sicurezza, ora utilizzo http://faye.jcoglan.com/node.html (faye) per i socket sul nodo JS e funziona perfettamente ... mi sembra un bug socket.io. –