我正在制作一个使用nodejs,mongodb,socket.io,express和mongoose的网络应用程序。
我可以启动我的服务器,并在浏览到我的本地主机时在我的浏览器中正确获取所需的html文件
我遇到的问题是让socket.io工作。
在我的服务器端,一切正常:我的终端上有“info - socket.io started”。
但是当我浏览我的浏览器时,我会在浏览器控制台中找到这个<
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 not found or io not defined)
提前致谢!
修改 我在服务器端的代码是:
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");
});
第一个日志记录在终端中(“服务器已启动”),但第二个日志(“连接已建立”)未记录。所以没有建立连接。 我认为那是因为我的客户端错误的“设置”。
答案 0 :(得分:2)
查看快速迁移指南2-&gt; 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 :(得分:-1)
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');
});