Express js chat application:socket.io.js文件中的404错误

时间:2015-06-09 08:32:44

标签: javascript node.js express

我正在尝试使用Express js(jade模板)和app.js开发聊天应用程序。这是我的var express = require('express'); var path = require('path'); var http = require('http'); var io = require('socket.io')(http); var app = express(); //start chat with socket io io.sockets.on('connection',function(socket){ console.log("connection"); socket.on('send message',function(data,callback){ var msg=data.trim(); if(msg==null){ callback("enter a messsage"); }else{ console.log("chat message"+msg); io.sockets.emit('new message',{msg:msg}); } }); }); //end socket

chat.js

这是我在客户端的$(document).ready(function(){ var socket=io.connect('http://localhost:3000'); var $message=$('#message'); var $messageForm=$('#send-message'); //opens a connection and send to sever $messageForm.submit(function(e){ e.preventDefault(); socket.emit('send message',$message.val(),function(data){ console.log("data"+data); }); $message.val(''); }); //read the chat messages from users socket.on('new message',function(data){ console.log('data.msg'); }); }); 文件

chat.jade

<form id="send-message"> <input type="text" id="message"> <input type="submit" value="submit"/> </form> <script src="http://localhost/api/jquery.min.js"></script> <script src="http://localhost:3000/socket.io/socket.io.js"></script> 档案

http://localhost:3000/socket.io/socket.io.js

我将在此文件Uncaught ReferenceError: io is not defined上收到404错误。另请在chat.js脚本中获取socket.io.js。我认为这是因为缺少<fo:inline-container> <fo:block> <xsl:text>&#x200B;</xsl:text> </fo:block> </fo:inline-container> 文件。

1 个答案:

答案 0 :(得分:3)

你有几个问题 在jade模板中提供静态文件应该使用以下内容:

link(rel='text/javascript', href='/js/socket.io.js')    

这些文件通常包含在您的快递应用程序的public目录中。 然后在你的app.js中你应该有类似的东西:

app.use(express.static('public'));  

它在快递网站上解释 - http://expressjs.com/starter/static-files.html

其他地方

Uncaught ReferenceError: io is not defined  

$(document).ready(function(){
    var socket=io.connect('http://localhost:3000');

这是因为您尚未在客户端上定义io。您在名为connect的内容上调用了io,但未在任何地方声明/定义io

同时 您还没有在应用程序端创建套接字服务器。你应该按照以下方式做点什么:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});  
io.on('connection', function (socket) {
    // when the client emits 'new message', this listens and executes
    socket.on('new message', function (data) {
        // we tell the client to execute 'new message'
        socket.broadcast.emit('new message', {
        });
    });

示例
Socket.io在github上有一个示例聊天应用程序,您应该将其用作参考 您的chat.js将等同于public/main.js 您的chat.jade等同于public/index.html 并且您的app.js与其index.js

相匹配