SendGrid 활동을 검색합니다.입출력 버튼으로 표시
해봤는데 간단하게 이루어졌으니 총결산해 봅시다.환경은 docker의 alpine linux3.15.0 & Node입니다.js17.3.0입니다.
app.js
우선 서버 쪽입니다.여기.로 쓴 앱입니다.네, 제이스 소켓.입출력 Get Started의 서버 측을 참조했습니다.
app.js
const express = require('express');
const { createServer } = require('http');
const { Server } = require('socket.io');
const bodyParser = require('body-parser');
const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer);
app.use(bodyParser.json());
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/', (req, res) => {
io.emit('message', JSON.stringify(req.body));
res.sendStatus(200);
});
io.on('connection', socket => {
console.log('connection');
socket.on('disconnect', () => {
console.log('disconnect');
});
});
httpServer.listen(3000);
처음에 POST 부분은 이렇게 썼지만 Send Grid의 Event Webhook은 JSON 대상의 배열이기 때문에 아무것도 하지 않으면 고객 측은 [object Object], [object Object]...의 표시 JSON.stringfy입니다. 따라서 문자열로 변환됩니다.(사용법이 있나...)app.post('/', (req, res) => {
io.emit('message', req.body);
res.sendStatus(200);
});
index.html
클라이언트 HTML.socket.io.min.js는 CDN의 물건을 이용했다.p탭에 서버에서 받은 데이터를 추가하기만 하면 됩니다.
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SendGrid Event Webhook</title>
</head>
<body>
<p id="message"></p>
<script src="https://cdn.socket.io/4.4.0/socket.io.min.js" integrity="sha384-1fOn6VtTq3PWwfsOrk45LnYcGosJwzMHv+Xh/Jx5303FVOXzEnw0EpLv30mtjmlj" crossorigin="anonymous"></script>
<script>
const socket = io();
var message = document.getElementById("message");
socket.on('message', msg => {
message.innerHTML += msg;
});
</script>
</body>
</html>
실행 결과
동작 확인은 여기. 단계에서localtunnel을 사용하는 로컬 환경에서 이루어집니다.
방문했을 때부터 아무것도 보이지 않은 상태였습니다.Event Webhook의 "Test Your Integration"을 눌러 POST 데이터를 받으면 서버에서 클라이언트(브라우저)에 표시됩니다.
이 초대장을 어디에 두면 리퀘스트 빈처럼 사용할 수 있을 거예요.
Reference
이 문제에 관하여(SendGrid 활동을 검색합니다.입출력 버튼으로 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kikutaro/articles/30c3f66db2bcbd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)