【问题标题】:socket.io + express networkerror: 404 [duplicate]socket.io + express 网络错误:404 [重复]
【发布时间】:2012-07-24 18:22:08
【问题描述】:

可能重复:
socket.io: Failed to load resource

一个简单的 express + socket.io hello world 应用程序似乎不起作用,我不断收到

“网络错误:404 未找到 - http://localhost:3002/socket.io/socket.io.js"

有人知道这个问题吗?

代码:

app.js

var express = require('express'),
http = require('http');

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


app.configure(function () {
app.use(express.static(__dirname + '/public'));
});

app.listen(3002);


io.sockets.on('connection', function(socket) {
socket.emit('news', {hello: 'world'});
socket.on('my other event', function (data) {
    console.log(data);
});
});

index.html

<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my:'data' });
});

【问题讨论】:

标签: javascript node.js express socket.io


【解决方案1】:

您的 Socket.IO 服务器正在侦听端口 3002,但您连接到:

var socket = io.connect('http://localhost');

默认使用标准端口80。试试这个:

var socket = io.connect('http://localhost:3002');

您可能还需要将localhost 更改为您机器的IP。

旁注:如果您在同一个端口上运行 Express Server 和 Socket.IO 服务器,那么您可以简单地这样做:

var socket = io.connect();

【讨论】:

  • 感谢您的回复先生!我不认为使用 localhost 或我的 IP 之间有什么不同?此外,我已经尝试过您的修复,仍然得到 404。
  • 这很有趣。也许这是因为您在套接字侦听后触发了服务器侦听?把这行:var io = require('socket.io').listen(server);放在app.listen(3002);之后。这是我最后的想法。 :)
  • 确保您没有使用旧的无端口 URL 重新加载缓存页面。
猜你喜欢
  • 2015-05-25
  • 2015-08-11
  • 1970-01-01
  • 2014-11-20
  • 2018-06-20
  • 1970-01-01
  • 2021-11-21
  • 2011-08-17
  • 1970-01-01
相关资源
最近更新 更多