【问题标题】:Issues with using Socket.io使用 Socket.io 的问题
【发布时间】:2016-09-05 04:23:14
【问题描述】:

我第一次尝试使用 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 页面时,控制台中出现以下错误。

任何帮助将不胜感激!

更新:

【问题讨论】:

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


    【解决方案1】:

    socket.io 服务器会在您像这样检索文件时执行一些魔法来提供该文件:

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

    编辑:啊,我明白了:您的 Express 设置不正确。

    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 没有附加到该服务器.

    你可以让设置简单一点:

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

    无需使用http

    【讨论】:

    • 感谢您的回答。我试过它在浏览器控制台中给出了类似的错误以及io is not defined
    • 您在使用自己的脚本之前包含该文件?
    • 是的,我先添加文件,然后在它下面输入我自己的var socket = io.connect() 脚本。
    • 你能确定/socket.io/socket.io.js确实被正确加载了吗?
    • @LorenzovonMatterhorn 没关系,这实际上是另一个问题。查看我的编辑。
    【解决方案2】:

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

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

    【讨论】:

    • socket.io 服务器会自动添加路由来处理/socket.io/socket.io.js,无需手动操作。
    • 谢谢,我不知道!有点跑题了,但他们的网站似乎已经关闭了很长时间......
    • 是的,我不知道为什么,它已经离线好几天了。几乎得到了似乎没有人关心的想法:-(
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2021-11-11
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多