Javascript 如何使用Express、AngularJS、Socket.io广播和获取通知?
我正在尝试建立一个通知系统。为了演示这一点,用户1正在向用户2发送好友请求。我正在使用express.js、angularjs和socket.io。点击按钮,User1发送请求。在User2的末尾,有一个套接字On(),它正在侦听好友请求事件。但当我在广播时,其他用户无法接收任何消息 app.js(节点服务器文件) config.jsJavascript 如何使用Express、AngularJS、Socket.io广播和获取通知?,javascript,angularjs,node.js,express,socket.io,Javascript,Angularjs,Node.js,Express,Socket.io,我正在尝试建立一个通知系统。为了演示这一点,用户1正在向用户2发送好友请求。我正在使用express.js、angularjs和socket.io。点击按钮,User1发送请求。在User2的末尾,有一个套接字On(),它正在侦听好友请求事件。但当我在广播时,其他用户无法接收任何消息 app.js(节点服务器文件) config.js // This file handles the configuration of the app. // It is required by app.js v
// This file handles the configuration of the app.
// It is required by app.js
var express = require('express');
module.exports = function(app, io){
// Set .html as the default template extension
app.set('view engine', 'html');
// Initialize the ejs template engine
app.engine('html', require('ejs').renderFile);
// Tell express where it can find the templates
app.set('views', __dirname + '/views');
// Make the files in the public folder available to the world
app.use(express.static(__dirname + '/public'));
};
routes.js(从该文件发出好友请求)
角度代码.js(角度代码文件)
home.html
<!DOCTYPE html>
<html ng-app="notificationApp">
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body ng-controller="chatCTRL">
<h1>welcome</h1>
<div id="createbutton">
<div id="little"><button ng-click="sendrequest(senderId,6)">Send Friend Request to User#6</button></div>
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="../angular/angular.js"></script>
<script src="../angular/common_angular.js"></script>
</body>
</html>
欢迎
向用户发送好友请求#6
一些客户端体系结构:
//var socket = io();
//socket.on('connect', function () {
// io.on('friend request', function (data) {
// alert("here")
// });
//});
//io.emit('friend request', {
// receiverid: data.receiverid
//});
将其更改为此(如果您在服务中建立连接,则应省略连接部分):
后端:
在注释代码中,您有:
//var socket = io();
//socket.on('connect', function () {
// io.on('friend request', function (data) {
// alert("here")
// });
//});
//io.emit('friend request', {
// receiverid: data.receiverid
//});
您应该使用var chat=io.on('connection',function(socket){…
中的socket
,而不是io.emit
创建数组变量,在连接部件之前,您将在其中存储所有具有用户id的套接字:
var socketList = [];
var chat = io.on('connection', function (socket) {
socketList.push({id:someId,socket:socket})
...
}
现在在send request
中,用户应该发送其朋友的id(我们必须知道应该通知哪个用户-当然我们可以通知所有人):
另外,我不喜欢这部分内容,因为这意味着taget用户从接收方客户端获取接收方id。这可能不安全(用户可以更改其id并发送其他id)。我更喜欢在服务器端创建id,当用户A向用户B发送通知时,我从服务器变量获取用户A id
我创建了聊天应用程序的简单原型(angular和express),我在这里提到了一些事情。我想你的应用程序仍然存在问题,去那里检查我的代码:
@Nutty…嗨,我想在我的meanjs应用程序中请求朋友…我尝试了很多方法,搜索了很多链接,以找到确切的解决方案,但对我们没有帮助…那么你能帮助我们吗?…我如何在我的应用程序中编写请求朋友的代码…请帮助我们,,,,谢谢如果你有plunker,请提供了解确切的结构and解决方案…尽快恢复…谢谢…你好,我想在我的meanjs应用程序中进行好友请求…我尝试了许多方法,搜索了许多链接以找到确切的解决方案,但对我们没有帮助…所以你能帮助我们吗?…我如何编写代码在我的应用程序中执行好友请求…请帮助我们,,,,谢谢你你有plunker,请提供确切的结构和解决方案…尽快回复…谢谢…嗨。stackoverflow的想法是与广大观众分享知识。我不确定我是否可以帮助你,可能是其他人。请创建单独的问题,很可能有人回答。你也可以粘贴到该问题的链接下面是我的评论,我会尽力回答。
//io.emit('friend request', {
// receiverid: data.receiverid
//});
var socketList = [];
var chat = io.on('connection', function (socket) {
socketList.push({id:someId,socket:socket})
...
}
socket.on('send-request',function(data){
socketList.forEach(function(soc){
if(soc.id === someId){
soc.socket.emit('friend request', {
receiverid: data.receiverid
})
}
});