我一直在花费我的第一个应用程序将socket.io与Node和Express结合使用,而我似乎无法在客户端找到我的socket.io.js
文件。我已经阅读了很多有关此问题的SO问题和其他论坛,但似乎无法使用任何推荐的解决方案。
我已经成功安装了express和socket.io,一切都在服务器端正常工作(目前只是使用Twitter Stream Api)。既然我想在客户端使用emit
中的数据,我需要包含我的套接字文件。
我已将HoganJS设置为我的视图引擎。
以下是我的app.js
文件的摘录:
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hjs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: path.join(__dirname, 'public') }));
app.use(express.static(path.join(__dirname, 'public')));
我有另一个名为index.js
的文件,这是我的推特和套接字代码,这是我的需求行:
var twitter = require('ntwitter');
var io = require('socket.io').listen(3001, {log: false});
// all my twitter setup/functions etc here
io.sockets.emit('tweets' ,data);
现在在客户端,我已经尝试了所有可能的路径,包括:
<script src="localhost:3000/socket.io/socket.io.js"></script>
<script src="socket.io/socket.io.js"></script>
还有许多其他途径试图弄清楚如何正确地链接它。如果这很明显或在其他地方得到解答,我非常抱歉,但我找不到它。
根据chrome dev工具,我可以提出的任何路径都会产生404。
非常感谢!
答案 0 :(得分:1)
由于您在端口3001上运行socket.io
:
<script src="http://localhost:3001/socket.io/socket.io.js"></script>
但您也可以在同一个端口上同时运行socket.io
和Express:
var express = require('express');
var app = express();
var server = app.listen(3000);
var io = require('socket.io').listen(server);
答案 1 :(得分:0)
检查您是否有文件socket.io.js
。
在node_modules -> socket.io -> socket.io.js
如果是,则尝试此路径
< script src="/socket.io/socket.io.js" > < /script>