pat*_*ter 2 javascript node.js express socket.io pug
我对javascript非常好,但我对node.js和jade相当新.我正在尝试使用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"
}
Run Code Online (Sandbox Code Playgroud)
好到目前为止对吗?
然后我创建了server.js文件和script.js文件.接下来,我home.jade为UI 创建了文件.
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
Run Code Online (Sandbox Code Playgroud)
当我启动我的服务器并转到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')在jade文件中执行的文件.
任何暗示正确的方向将不胜感激!
编辑1
这是我的server.js片段
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);
})
});
});
Run Code Online (Sandbox Code Playgroud)
您的socket.io初始化不正确.
而不是这(实际上给了我一个警告):
var io = require('socket.io').listen(app);
...
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
用这个:
var io = require('socket.io').listen(app.listen(3000));
// or a bit more elaborate:
var server = app.listen(3000);
var io = require('socket.io').listen(server);
Run Code Online (Sandbox Code Playgroud)
不同的是,该.listen()方法socket.io需要一个http.Server实例作为论据,这就是快递的.listen()方法恰好返回.
app 本身就是一个Express实例,这是另一回事.
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |