ham*_*med 7 javascript mysql push-notification node.js
我是全新的node.js,我想在MySql数据库上实现推送通知系统.我的数据库中有一个通知表.在此表中,我有存储recipient_id指定通知的收件人.现在我想要一个新的通知recipient_id等于当前登录用户的id通知该用户.例如,Stackoverflow如果您在java标记问题中,每次java创建带标记的新问题时,页面顶部都会显示通知:1 question with new activity.
抱歉,我的英文不好.请帮我实现这个系统,因为我是新手.
我已经制作了一个像你的要求的简单应用程序
您可以从以下代码行获得帮助.您需要了解代码的基础知识.之后,您将轻松实现目标.本演示应用程序中涵盖了您的要求中的大部分内容.
它不是一个确切的但你会通过这个达到你的目标.
在此示例中,任何用户的状态帖子也将同时向所有其他用户发出.我们可以操纵它来实现"1新状态".
在数据库中创建一个表,在其中保存要保存的条目CREATE TABLE status
(
`status_id` INT NOT NULL AUTO_INCREMENT,
`s_text` TEXT,
`t_status` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ( `status_id` )
);
Run Code Online (Sandbox Code Playgroud)
//server.js
var app = require("express")();
var mysql = require("mysql");
var http = require('http').Server(app);
var io = require("socket.io")(http);
/* Creating POOL MySQL connection.*/
var pool = mysql.createPool({
connectionLimit: 100,
host: 'localhost',
user: 'root',
password: '',
database: 'fbstatus',
debug: false
});
app.get("/", function(req, res) {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket) {
console.log("A user is connected");
socket.on('status added', function(status) {
add_status(status, function(res) {
if (res) {
io.emit('new status', status);
} else {
io.emit('error');
}
});
});
});
var add_status = function(status, callback) {
pool.getConnection(function(err, connection) {
if (err) {
connection.release();
callback(false);
return;
}
connection.query("INSERT INTO `status` (`s_text`) VALUES ('" + status + "')", function(err, rows) {
connection.release();
if (!err) {
callback(true);
}
});
connection.on('error', function(err) {
callback(false);
return;
});
});
}
http.listen(3000, function() {
console.log("Listening on 3000");
});
Run Code Online (Sandbox Code Playgroud)
//index.html
<html>
<head>
<title>Socket.io</title>
<script src="/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<script src = "http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
var socket = io();
$("#add_status").click(function(){
socket.emit('status added',$("#comment").val());
});
socket.on('new status',function(msg){
var count = $('#count_status').text();
var valCount = parseInt(count);
if(valCount>=1) {
valCount = valCount+1;
} else {
valCount = 1;
}
var showMsg = '<div id="count_status"> '+valCount+' </div> new status';
$("#show_comments").html(showMsg);
});
});
</script>
</head>
<body>
<div id="comment_box" style = "padding:5%;">
<textarea id="comment" rows="5" cols="70"></textarea><br /><br />
<input type="button" id="add_status" value="Add">
</div>
<div id= "show_comments" class = "jumbotron"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用以下命令节点Server.js运行应用程序
现在在浏览器中运行http:// localhost:3000 /并查看结果,打开一个新窗口,在该窗口中发布状态并在窗口中查看新状态通知.
谢谢
编辑:这是一个很棒的启动教程.有些事情需要修改.
您可以通过两种方式进行:
websockets它来维护客户端和服务器之间的永久连接,然后您可以从服务器代码实时向客户端发送通知。请参阅socket.io教程。这称为推送策略。| 归档时间: |
|
| 查看次数: |
8474 次 |
| 最近记录: |