获取 http://localhost:3000/socket.io/socket.io.js 404(未找到)
Posted
技术标签:
【中文标题】获取 http://localhost:3000/socket.io/socket.io.js 404(未找到)【英文标题】:GET http://localhost:3000/socket.io/socket.io.js 404 (Not Found) 【发布时间】:2013-06-03 14:25:27 【问题描述】:我正在尝试将数据流式传输到浏览器。但是,我正在努力将其连接到浏览器。这是我的html:
<ul class="tweets"></ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
jQuery(function ($)
var tweetList = $('ul.tweets');
socket.on('tweet', function (data)
tweetList .prepend('<li>' + data.user + ': ' + data.text + '</li>');
);
);
</script>
这是我的 app.js 的相关部分:
var express = require('express')
, twitter = require('ntwitter')
, http = require('http')
, path = require('path');
var app = express();
var io = require('socket.io').listen(app);
app.get('/', function (req, res) res.sendfile(__dirname + '/index.html'); );
app.listen(app.get('port'), function()
console.log("Express server listening on port " + app.get('port'));
);
io.sockets.volatile.emit('tweets',
user: data.user.screen_name,
text: data.text,
geo : geo,
latitude: latitude,
longitude: longitude
);
我通过 packages.json 文件安装了 socket.io 0.9.16:
"dependencies":
"express": "3.2.6",
"jade": "*",
"ntwitter":"0.2.10",
"socket.io":"0.9.x"
有人可以帮我吗?为什么找不到文件?
挖得更深一点。为了测试套接字,我把它放在 app.js 中:
var socket = io.listen(app);
我得到了错误:
TypeError: Object #<Manager> has no method 'listen'
at Object.<anonymous> (/home/andy/dev/node/mytwittermap/app.js:49:17)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
【问题讨论】:
【参考方案1】:你可以试试这个:
var http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
我猜,你必须实例化 socket.io 服务器。
【讨论】:
太棒了 - 现在似乎可以正常工作了(控制台中有很多很好的调试信息)。现在谈谈为什么它没有显示在浏览器中。非常感谢您的帮助。【参考方案2】:您的设置需要如下所示:
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
...
server.listen(app.get('port')); // not 'app.listen'!
【讨论】:
谢谢,你的台词:“// not 'app.listen'!” 帮了大忙!! 感谢“不是 app.listen” 2016 年在这里。我有同样的错误。细节发生了变化,但我们需要做的部分server.listen
(不在应用程序上)仍然有效。谢谢!
@sra 你能看看我刚刚发布的这个吗? ***.com/questions/40659396/…
(socket.io).listen 不起作用,必须直接输入 (socket.io)(server)【参考方案3】:
你需要实例化socket.io连接和
您需要使用server.listen()
而不是app.listen()
试试这样的:
// at the top of app.js
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
// your code
// at the bottom of app.js
server.listen('3000', () =>
console.log('Server listening on Port 3000');
)
【讨论】:
以上是关于获取 http://localhost:3000/socket.io/socket.io.js 404(未找到)的主要内容,如果未能解决你的问题,请参考以下文章
CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:8080/demo/getAll”获取
CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:9900/jaxrs-post-example/rest/customers”获取
获取 http://localhost:3000/socket.io/socket.io.js 404(未找到)
CORS 策略已阻止从源“http://localhost:3000”访问“https://randomuser.me/api/?results=4”获取:
如何在 ReactJS 中的 http://localhost:3000/ 和 TMDB api 之间启用 CORS?
Rails 3 应用程序中的 Access-Control-Allow-Origin 不允许来源 http://localhost:3000