Skip to content

Instantly share code, notes, and snippets.

@ykyk1218
Last active June 8, 2019 00:30
Show Gist options
  • Save ykyk1218/2903e1d16b8c69402a84 to your computer and use it in GitHub Desktop.
Save ykyk1218/2903e1d16b8c69402a84 to your computer and use it in GitHub Desktop.
Node.jsとChrome拡張機能を使ってリアルタイムで通知を出す ref: http://qiita.com/ykyk1218/items/c8025236badb691183b6
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var http = require('http');
var app = express();
// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//===========================
//ルーティング
app.post('/', function(req, res) {
var commits = req.param('commits');
var commit_message = "";
for(var i=0; i<commits.length; i++) {
//マージのcommitメッセージはなくす
if(commits[i]['message'].indexOf('Merge branch') < 0 ) {
console.log(commits[i]['message']);
commit_message += commits[i]['message'];
}
}
io.sockets.emit('push', {value: commit_message});
res.render('index', { title: 'Express' });
});
//===========================
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.set('port', process.env.PORT || 3000);
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
//Websokcet接続の部分
var server = http.createServer(app);
server.listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
console.log('connection start');
});
module.exports = app;
var socket = io.connect("websocketサーバーのURL");
//websocketで接続した時
socket.on('push', function(message) {
var opt = {
type: 'basic',
title: 'タイトル',
message: message.value,
iconUrl: "ポップアップで表示させるアイコン"
}
//アイコンにつけるバッチ
chrome.browserAction.setBadgeText({text:"1"});
//ポップアップ通知
chrome.notifications.create("", opt, function(id){});
});
//ツールバーをクリック時にバッチを消す
chrome.browserAction.onClicked.addListener(
function(tab) {
chrome.browserAction.setBadgeText({text:""});
}
);
var bodyParser = require('body-parser');
・・・・・
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/', function(req, res) {
var commits = req.param('commits');
var commit_message = "";
for(var i=0; i<commits.length; i++) {
//マージのcommitメッセージはなくす
if(commits[i]['message'].indexOf('Merge branch') < 0 ) {
console.log(commits[i]['message']);
commit_message += commits[i]['message'];
}
}
io.sockets.emit('push', {value: commit_message});
res.render('index', { title: 'Express' });
});
npm install socket.io
var server = http.createServer(app);
server.listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
console.log('connection start');
});
{
"manifest_version": 2,
"name": "拡張機能の名前",
"version": "1.0",
"description": "説明文",
"browser_action": {
"name": "拡張機能の名前"
},
"permissions": [
"notifications",
],
"background": {
"persistent": false,
"scripts": ["socket.io.js", "eventpage.js"]
},
"icons" : {
"16":"16x16のアイコン画像",
"48":"48x48のアイコン画像"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment