Skip to content
This repository has been archived by the owner on Sep 17, 2020. It is now read-only.

Feature/session #1

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AnimoServer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"@types/node": "^12.11.7",
"@types/socket.io": "^2.1.4",
"express": "^4.17.1",
"qrcode": "^1.4.2",
"socket.io": "^2.3.0",
"ts-node": "^8.4.1",
"typescript": "^3.6.4"
Expand Down
8 changes: 7 additions & 1 deletion AnimoServer/src/AnimoTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,21 @@ export enum AniMoAnimation {
}

export type NextSlidePayload = {
sessionId: string;
animType: AniMoAnimation;
direction: TrasitionDirection;
};

export type PrevSlidePayload = {};
export type PrevSlidePayload = {
sessionId: string;
};

export enum EventType {
Mobile_Connect_Presentation = 'mobileConnectPresentation',
Mobile_Send_NextSlide_Action = 'mobileSendNextSlideAction',
Mobile_Send_PrevSlide_Action = 'mobileSendPrevSlideAction',
Mobile_Connect_Complete = 'mobileConnectComplete',
Web_Start_Presentation = 'webStartPresentation',
Web_Go_To_NextSlide = 'webGoToNextSlide',
Web_Return_To_PrevSlide = 'webReturnToPrevSlide',
}
16 changes: 16 additions & 0 deletions AnimoServer/src/QRCodeFileGen.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// QRCodeFileGen.ts
import * as QRCode from "qrcode";
interface _IQRCodeOption {
filename:string,
type:string,
}
export class QRCodeFileGenClass {
option: _IQRCodeOption;
toFile(filepath:string, filetype:string, value:any){
this.option = {
filename: filepath,
type: filetype
}
QRCode.toFile(this.option.filename, value, this.option);
}
}
35 changes: 33 additions & 2 deletions AnimoServer/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,26 @@ import * as express from 'express';
import * as socketIo from 'socket.io';
import { AddressInfo } from 'net';
import { EventType, NextSlidePayload, PrevSlidePayload } from './AnimoTypes';
import {QRCodeFileGenClass} from "./QRCodeFileGen"

const app = express();
const router = express.Router();

function getRndStr():string{
//使用文字の定義
var str = "0123456789";

//桁数の定義
var len = 4;

//ランダムな文字列の生成
var result = "#";
for(var i=0;i<len;i++){
result += str.charAt(Math.floor(Math.random() * str.length));
}
return result;
}

app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
Expand All @@ -26,20 +42,35 @@ io.on('connection', socket => {
// 疎通確認用
socket.emit('ping', { response: 'pong' });

socket.on(EventType.Web_Start_Presentation, () => {
const sessionId = getRndStr()
const _QRCodeFileGen = new QRCodeFileGenClass();
const filepath:string = __dirname + "/test.png"
const filetype:string = ".png"
_QRCodeFileGen.toFile(filepath, filetype, sessionId);
socket.join(sessionId)
io.to(sessionId).emit(EventType.Web_Start_Presentation, {sessionId})
});

socket.on(EventType.Mobile_Connect_Presentation, (sessionId: string) => {
socket.join(sessionId)
io.to(sessionId).emit(EventType.Mobile_Connect_Complete, {response: 'connect completed'})
})

// モバイルの命令をトリガーに*次のスライドへ進む*イベントを発火
socket.on(EventType.Mobile_Send_NextSlide_Action, (payload: NextSlidePayload) => {
// Use of Date.now() function
const d = Date();
// Converting the number of millisecond in date string
const a = d.toString()
console.log(`[${a}]receive ${EventType.Mobile_Send_NextSlide_Action} payload: ${JSON.stringify(payload)}`)
socket.broadcast.emit(EventType.Web_Go_To_NextSlide, payload);
io.to(payload.sessionId).emit(EventType.Web_Go_To_NextSlide, payload);
});

// モバイルの命令をトリガーに*前のスライドへ戻る*イベントを発火
socket.on(EventType.Mobile_Send_PrevSlide_Action, (payload: PrevSlidePayload) => {
console.log(`receive ${EventType.Mobile_Send_NextSlide_Action} payload: ${payload}`)
io.sockets.emit(EventType.Web_Return_To_PrevSlide, payload);
io.to(payload.sessionId).emit(EventType.Web_Return_To_PrevSlide, payload);
});

socket.on('disconnect', () => {
Expand Down
Binary file added AnimoServer/src/test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading