将Socket.io集成到Angular.js样板文件中

时间:2015-06-21 19:59:02

标签: javascript angularjs node.js coffeescript socket.io

所以,我迷失了。

我有一个我从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电话会以某种方式到达它?

0 个答案:

没有答案