【发布时间】:2013-12-18 17:37:18
【问题描述】:
我很擅长使用 javascript,但我对 node.js 和 jam 还是很陌生。我正在尝试使用 socket.io(按照我在网上找到的教程)创建一个基本的聊天服务器,但我无法启动和运行它。
首先,我创建了一个基本的 package.json 文件,其中包括以下内容,运行时在我的工作目录中创建了 node_modules 目录。
{
"name": "Chat",
"version": "1.0.0",
"description": "Real Time Chat",
"dependencies": {
"socket.io": "latest",
"express": "latest",
"jade": "latest"
},
"author": "@pattmorter"
}
到目前为止还不错吧?
然后我创建了server.js 文件和script.js 文件。接下来我为 UI 创建了 home.jade 文件。
doctype 5
html
head
title Chatter
script(src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js')
script(src='socket.io/socket.io.js')
script(src='script.js')
body
//- some other formatting stuff that works correctly
当我启动服务器并转到 127.0.0.1:3000 时,页面会显示,但在错误控制台中显示 GET http://127.0.0.1:3000/socket.io/socket.io.js 404 (Not Found) 错误。
我以为我正确引用了该文件,但我猜不是 :( 我的想法是,由于 server.js 文件正在渲染 home.jade 文件,我只需要在玉文件中执行 script(src='socket.io/socket.io.js')。
任何正确方向的提示将不胜感激!
编辑 1
这是我的server.jssn-p
var express = require("express");
var app = express();
var jade = require('jade');
var io = require('socket.io').listen(app);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set("view options", { layout: false });
app.configure(function() {
app.use(express.static(__dirname + '/public'));
});
app.get('/', function(req, res){
res.render('home.jade');
});
app.listen(3000);
io.sockets.on('connection', function (socket) {
socket.on('setPseudo', function (data) {
socket.set('pseudo', data);
});
socket.on('message', function (message) {
socket.get('pseudo', function (error, name) {
var data = { 'message' : message, pseudo : name };
socket.broadcast.emit('message', data);
console.log("user " + name + " send this : " + message);
})
});
});
【问题讨论】:
-
尝试添加
/:/socket.io/socket.io.js -
听起来你的
server.js没有正确初始化socket.io。可以发一些代码吗? -
@BrianGlaz
/没有帮助。 -
@Tom 如果您正确设置了
socket.io,则您不需要在express.static提供的目录中的任何位置都有socket.io.js文件;socket.io模块实际上确实自己处理请求。
标签: javascript node.js express socket.io pug