使用Socket.io的问题

时间:2016-05-10 09:24:28

标签: javascript node.js mongodb express socket.io

我第一次尝试使用socket.io,我将它与MEAN Stack一起使用。我已经按照以下方式进行了设置。

Server.js

var express  = require('express');
var app      = express();                               // create our app w/ express
var server = require('http').createServer(app);
var io = require('socket.io')(server);

app.listen(port);

io.on('connection', function(socket) {

    socket.emit('message', {
        'message': 'hello world'
    });
});

HTML文件

<script>
var socket = io.connect();

socket.on('message', function(data) {
    console.log(data.message);
});
</script>

我无法找到socket.io.js文件,因此我搜索了该脚本的CDN。我使用了以下内容。

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.6/socket.io.js"></script>

我尝试从他们的网站下载socket.io.js,但网站似乎已关闭。我可以访问它,我得到 502 BAD GATEWAY 错误(http://socket.io

如上所示在设置完所有内容后加载HTML页面时,我在控制台中收到以下错误。

enter image description here

任何帮助将不胜感激!

更新

enter image description here

2 个答案:

答案 0 :(得分:0)

socket.io服务器会在您检索到该文件时执行一些魔术:

<script src="/socket.io/socket.io.js"></script>

编辑:啊,我看到了问题:您的快速设置不正确。

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

app.listen(port);

您将socket.io附加到由http.createServer创建的服务器,但app.listen()您实际上正在创建一个服务器,socket.io 1}}没有附加到。

您可以使设置更简单:

var express = require('express');
var app     = express();
var server  = app.listen(port);
var io      = require('socket.io')(server);

无需使用http

答案 1 :(得分:0)

截至目前,socket.io网站仍在关闭。如果您的服务器中没有该文件,则无法使用/socket.io/,因为这会指向您服务器上的路由,并且该路由似乎不存在于您的应用中。使用此配置,您需要从服务器静态地提供.js文件 - 但我在您的服务器代码上看不到。

尝试CDN时,请确保正在加载文件。