我第一次尝试使用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页面时,我在控制台中收到以下错误。
任何帮助将不胜感激!
更新
答案 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时,请确保正在加载文件。