Създавам уеб приложение, което използва nodejs, mongodb, socket.io, express и mongoose.
Мога да стартирам сървъра си и правилно да получа желания html файл в моя браузър, когато разглеждам моя локален хост.
Проблемът ми е да накарам socket.io да работи. На сървъра ми всичко работи добре: в моя терминал получавам "info - socket.io".
Но когато сърфирам в моя браузър, получавам това в моята конзола на браузъра
Failed to load resource: the server responded with a status of 404 (Not Found)
Uncaught ReferenceError: io is not defined
Ето как се свързвам с socket.io.js
<script src="/socket.io/socket.io.js"></script>
и моята структура на картата изглежда така:
map
-app.js
-public
--index.html
-node_modules
--socket.io
--mongodb
--express
--jade
--mongoose
Някой знае ли каква грешка съм направил?
(това е всъщност същия проблем, както тук: Node.js socket.io.js не е намерен или не е дефиниран )
Благодаря предварително!
РЕДАКТИРАНЕ: Моят код от сървъра е следният:
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");
});
Първият журнал се записа в терминала("стартиран от сървъра"), но вторият ("направена връзка") не се записва, така че връзката не се прави. Мислех, че това се дължи на грешното "настроение" в клиентската ми страна.
Отговори:
2 за отговор № 1Разгледайте експресното ръководство за мигриране 2-> 3 https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x Нещо като това трябва да работи
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 за отговор № 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");
});