Sto creando un'app web che utilizza nodejs, mongodb, socket.io, express e mangusta.
Posso avviare il mio server e ottenere correttamente il file html desiderato nel mio browser quando navighi sul mio localhost.
Il problema che ho è quello di far funzionare il mio socket.io. Dal mio lato server tutto funziona bene: ottengo "info - socket.io started" nel mio terminale.
Ma quando navigo sul mio browser ottengo questo nella mia console del browser
Failed to load resource: the server responded with a status of 404 (Not Found)
Uncaught ReferenceError: io is not defined
Ecco come mi connetto a socket.io.js
<script src="/socket.io/socket.io.js"></script>
e la mia struttura della mappa si presenta così:
map
-app.js
-public
--index.html
-node_modules
--socket.io
--mongodb
--express
--jade
--mongoose
Qualcuno sa qual è l'errore che ho fatto?
(In realtà è lo stesso problema di qui: Node.js socket.io.js non trovato o io non definito )
Grazie in anticipo!
MODIFICARE: Il mio codice sul lato server è questo:
var app= require("express").createServer();
var io = require("socket.io").listen(app);
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://localhost/db");
app.listen(3030);
console.log("server started");
app.get("/",function(req,res){
res.sendfile(__dirname + "/public/index.html");
});
io.sockets.on("connection",function(socket){
console.log("connection made");
});
Il primo registro, viene registrato nel terminale("server started"), ma il secondo ("connection made") non viene registrato, quindi la connessione non viene effettuata. Ho pensato che fosse a causa del "set up" sbagliato nella mia parte client.
risposte:
2 per risposta № 1Consulta la guida alla migrazione espressa 2-> 3 https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x Qualcosa del genere dovrebbe funzionare
var express = require("express");
var app = express();
var http = require("http");
var server = http.createServer(app);
var io = require("socket.io").listen(server);
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://localhost/db");
server.listen(3030);
console.log("server started");
app.get("/",function(req,res){
res.sendfile(__dirname + "/public/index.html");
});
io.sockets.on("connection",function(socket){
console.log("connection made");
});
-1 per risposta № 2
var app = express();
app.set("port", process.env.PORT || 3000);
...
var server = http.createServer(app).listen(app.get("port"), function(){
console.log("Express server listening on port " + app.get("port"));
});
var io = socket.listen(server);
io.sockets.on("connection", function () {
console.log("hello world im a hot socket");
});