在客户端包括Socket.io

时间:2013-10-26 08:29:08

标签: node.js sockets express

我一直在花费我的第一个应用程序将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。

非常感谢!

2 个答案:

答案 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>