首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.io不使用静态文件路由node.js。

socket.io不使用静态文件路由node.js。
EN

Stack Overflow用户
提问于 2017-02-10 15:59:13
回答 1查看 1.3K关注 0票数 1

我在写聊天应用程序。在这种情况下,当静态文件路由工作时,socket.io (聊天)不能工作,抛出控制台中找不到错误。

找不到http://localhost/socket.io/?EIO=3&transport=polling&t=1486739955177-8 404

当聊天正常时,则公共静态文件无法工作抛出错误。

无法获取/public/index.html

代码聊天工作(公共静态文件不能工作) :

代码语言:javascript
复制
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var path=require('path');

//Initialize application with route
app.get('/',function (req,res) {
 var express=require('express');
 app.use(express.static(path.join(__dirname+'/public')));
 res.sendFile(path.join(__dirname,'../public','chat.html'));
});

//Register events on socket connection
io.on('connection',function (socket) {
   socket.on('chatMessage',function (from, msg) {
    io.emit('chatMessage',from,msg);
 });

 socket.on('notifyUser',function (user) {
    io.emit('notifyUser',user);
  });
});

// Listen appliaction request on port 80
http.listen(80,function () {
   console.log('Server Running in port 80');
});

代码公共静态文件工作(聊天不工作) :

代码语言:javascript
复制
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var path=require('path');

//Initialize application with route
var express=require('express');
app.use(express.static('public/'));
app.use('/public',express.static('public/stack'));


//Register events on socket connection
io.on('connection',function (socket) {
    socket.on('chatMessage',function (from, msg) {
        io.emit('chatMessage',from,msg);
    });
    socket.on('notifyUser',function (user) {
        io.emit('notifyUser',user);
    });
});


app.get('*', function(req, res){
    res.send('what???', 404);
});

// Listen appliaction request on port 80
app.listen(80,function () {
    console.log('Server Running in port 80');
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 17:21:41

好的,这段代码可以工作

代码语言:javascript
复制
var express=require('express');
var app = express();
var path=require('path');
var server = require('http').createServer(app);
var io=require('socket.io')(server);
//Initialize application with route
app.use(express.static('public/'));
// app.use('/public',express.static('public/stack'));

//Register events on socket connection
io.on('connection',function (socket) {
    socket.on('chatMessage',function (from, msg) {
        io.emit('chatMessage',from,msg);
    });
    socket.on('notifyUser',function (user) {
        io.emit('notifyUser',user);
    });
});

app.get('/', function(req, res){
    res.send('what???', 404);
});

// Listen appliaction request on port 80
server.listen(80,function () {
    console.log('Server Running in port 80');
});

chat.html移动到侧公用文件夹中,并像http://localhost/client.html那样访问

目录结构就像

appdir public/client.html server.js node server.js

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42163589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档