所以,我迷失了。
我有一个我从here
构建的vanilla项目基本上它构建了一个预先与Grunt,CoffeeScript,Angular和Bootstrap打包在一起的基本项目。我唯一缺少的是添加Socket.io。现在,这是我痛苦失落的地方。根据我的理解,我应该使用npm来安装socket,将其导入我的脚本列表中,然后做一些或多或少的初始设置:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
然后参考io
变量了解所有的安全性。
现在,出于各种原因,这对我来说不起作用。首先,我没有app.js文件,在那里添加所有初始socket.io设置。我的项目看起来更像:
├── app
│ ├── index.html
│ ├── scripts
│ │ ├── app.coffee
│ │ └── controllers
│ │ ├── about.coffee
│ │ └── main.coffee
│ ├── styles
│ │ └── main.scss
│ └── views
│ ├── about.html
│ └── main.html
├── bower.json
├── Gruntfile.js
├── package.json
├── README.md
├── server.js
app.cofee是带有应用程序设置的ng-app文件。
现在,我可以在我的Gruntfile顶部添加设置,不确定这是否是我应该做的,但这确实提供了我应该在索引中导入的socket.js.io
文件。 HTML。但是,我有一些问题。
所以,第一个问题,将设置放在我的gruntfile中并不会使我的app.coffee中的io
变量可用。我认为这就是我想要调用各种Socket方法,如io.connect();
其次,这部分让我觉得很奇怪
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
当我的应用程序在端口9000上运行时,这是在端口3000上提供/socket.io/socket.io.js
文件。但是,我不能指向端口9000而不会遇到端口正在使用的问题。我认为这是一个问题的原因是强迫我将它与<script src="http:localhost:3000/socket.io/socket.io.js"></script>
这样的东西联系起来,如果我将页面提供给另一个主机,这将无效。如果所有的javascript都在同一个地方提供,那将会容易得多。我可以建立一个node_modules / socket.io / lib / socket.io.js的链接,但这似乎是一个不完整的答案。有没有更合适的方式呢?
最后,有一件事我没有找到有关的好信息。理想情况下,我想要一个server.coffee文件,我可以存储只能通过套接字调用访问的敏感信息。我不知道该怎么做。就像咕噜咕噜谁应该知道那个文件然后我的io.emit电话会以某种方式到达它?