我试图从服务器端发出一条消息将Sails应用程序发送到前端Angular2。我希望客户端和服务器端都在同一个应用程序,所以经过一番搜索,我发现这个repo。我不得不在另一个堆栈溢出post的帮助下在打字稿中导入socket.io,并在我的包json中添加了@types/socket.io-client
和socket.io-client
。我将包括我所有的文件。
这是我最初的抢答/ layout.ejs文件使用socket.io从Sails.js服务器发送数据到Angular2客户端
<!DOCTYPE html>
<html>
<head>
<title><%=typeof title == 'undefined' ? 'New Sails App' : title%></title>
<!-- Viewport mobile tag for sensible mobile support -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!--STYLES-->
<link rel="stylesheet" href="/styles/importer.css">
<!--STYLES END-->
<script src="node_modules/core-js/client/shim.min.js"></script>
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
</head>
<body>
<%- body %>
<!--SCRIPTS-->
<script src="/js/dependencies/sails.io.js"></script>
<script src="/js/systemjs.config.js"></script>
<!--SCRIPTS END-->
<script>
System.import('app').catch(function(err){ console.error(err); });
</script>
</body>
</html>
在我system.js.config.js文件我已经添加"socket.io-client": 'node_modules/socket.io-client/dist/socket.io.js'
我的地图和'socket.io-client': {defaultExtension: 'js'}
到包。
在我的组件包括我它import * as io from "socket.io-client";
后,我已经
export class AppComponent implements OnInit {
constructor(){}
ngOnInit() {
let socket = io();
socket.on('message', function (data){
console.log(data.greeting);
}.bind(this));
}
}
我的后端是一个简单的CONTROLER
emit: function (req, res) {
console.log('sending message');
sails.sockets.broadcast('message', { greeting: 'Hola!' });
return res.json(200, {success: true});
}
当我打电话emit
动作我得到sending message
,但没有日志在前端。没有任何错误,但没有任何反应。如果我登录套接字变量我得到这
是否有可能从我的后端Sails应用程序发射数据到我的前端Angular2组件?
是的,它是可能的,帆是捆绑在一起的套接字客户端的人:HTTP:// sailsjs.com/documentation/reference/web-sockets,它运作良好,并有很好的记录,所以我想知道为什么你使用第三方? –
@CraigvanTonder,因为我无法使用TypeScript将它导入Angular2应用程序中。我尝试过,但它不断给我错误。我检查的第一件事是粘贴sails文档。有人可以帮助我目前的设置吗?我正在使用'systemjs.config.js'文件来包含依赖关系。 – Lexx