Socket.io为nonsocket.io urls提供404

时间:2016-06-26 12:18:52

标签: node.js socket.io

我们有一些使用nodejs和socket.io作为服务器的聊天应用程序。客户端只是一个基于PHP的常规应用程序。它工作得很好。

但是,我们希望为与socket.io应用程序无关的网址提供404错误,例如基本网址,favicon.ico和其他网址。

例如,服务器位于:

https://awesome-messenger.com

和通常的socket.io url位于:

https://awesome-messenger.com/socket.io/*

我们想将404抛给其他任何未被socket.io处理的内容。

当前设置:

  • nodejs 6.x
  • socket.io latest

示例代码(messenger.js):

var app = require('http').createServer()
var io = require('socket.io')(app);

app.listen(4040);

io.on('connection', function (socket) {
    socket.on('joinRoom', function(data){
        socket.join(data.room);
    });

    // Other codes here...
});

开始于:

node /path/to/messenger.js

谢谢!

1 个答案:

答案 0 :(得分:0)

我们使用express + socket.io来提供自定义主页并在nonsocket.io网址上抛出404错误。我从这里得到了这个想法:http://socket.io/get-started/chat/

var app = require('express')(),
    http = require('http').Server(app),
    io = require('socket.io')(http);

app.get('/', function(req, res){
    res.sendfile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
    socket.on('joinRoom', function(data){
        socket.join(data.room);
    });

    // Other codes
});

http.listen(4040, function () {
    console.log('Listening on *:4040');
});

因此,如果我们访问类似于:/favicon.ico或/ foo / bar的内容,则会抛出一个简单的404错误。