Nodejs + Socket.io 질문드립니다.

Nodejs + Socket.io 질문드립니다.

작성일 2023.12.26댓글 1건
    게시물 수정 , 삭제는 로그인 필요

Node.js + express + mssql로
localhost:xxxx로 접속했을때 해당 db table의 내용을 json형태로 가져오는건 테스트 완료했습니다

아래는 DB 조회 예제입니다.

dbcoinfig.js
-------------------------------------------------------------------------------------
const config = {
user: 'id', // sql user
password: 'pasword', //sql user password
server: 'ip', // if it does not work try- localhost
database: 'database',
options: {
trustedconnection: true,
enableArithAbort: true,
instancename: 'instance' // SQL Server instance name
},
port: 1433
}

module.exports = config;
-------------------------------------------------------------------------------------


order.js
----------------------------------------------------------------------------------------------------
class userlist{
constructor(id,sung,email){
this.id = id;
this.sung = sung;
this.email = email;
}
}

module.exports = userlist;

-------------------------------------------------------------------------------------


dboperations.js
-------------------------------------------------------------------------------------
var config = require('./dbconfig');
const sql = require('mssql');
async function getOrders() {
try {
let pool = await sql.connect(config);
let products = await pool.request().query("SELECT * from userlist");
return products.recordsets;
}
catch (error) {
console.log(error);
}
}

async function getOrder(userid) {
try {
let pool = await sql.connect(config);
let product = await pool.request()
.input('input_parameter', sql.Int, userid)
.query("SELECT * from userlist where Id = @input_parameter");
return product.recordsets;
}
catch (error) {
console.log(error);
}
}

module.exports = {
getOrders: getOrders,
getOrder: getOrder
}
-------------------------------------------------------------------------------------

api.js
-------------------------------------------------------------------------------------
var Db = require('./dboperations');
var Order = require('./order');
var express = require('express');
var bodyParser = require('body-parser');
var cors = require('cors');
var app = express();
var router = express.Router();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());
app.use('/api', router);

router.use((request, response, next) => {
console.log('middleware');
next();
});
router.route('/orders').get((request, response) => {
Db.getOrders().then((data) => {
response.json(data[0]);
})
})

router.route('/orders/:id').get((request, response) => {
Db.getOrder(request.params.id).then((data) => {
response.json(data[0]);
})
})
var port = process.env.PORT || 8090;
app.listen(port);
console.log('Order API is runnning at ' + port);

-------------------------------------------------------------------------------------

위와 같이 세팅하고 node api.js 실행하면..
브라우저에 localhost:xxxx//api/orders/   실행시  json형태로 테이블 값들이 출력되고 있습니다.

이건 예제 일뿐이고...실제로 구현 하고 싶은건
text.html 파일을 하나 만들고....서버와 connection 되어 있다가 MS SQL의 특정 테이블에 값이 변경되거나 insert 되면 연결된 클라리언트로 값을 보내어....프론트단에서 UI적으로 변경을 알려주고 싶습니다.

socket.io를 어떤식으로 적용하고 해야할지 감이 없네요...
단순한 예제나 팁이라도 주시면 감사하겠습니다.


#nodejs + react #nodejs + express #nodejs + typescript #nodejs + vuejs #nodejs + python #node js + next js #nodejs download #nodejs mysql #nodejs lts #nodejs fetch

profile_image 익명 작성일 -

Socket.io를 사용하여 실시간으로 데이터베이스의 변경 사항을 클라이언트에 전달하는 기능을 구현하려면, 다음과 같은 방법을 고려해 볼 수 있습니다.

1. 먼저 socket.io를 설치하고 서버에 설정합니다.

var app = require('express')();

var server = require('http').Server(app);

var io = require('socket.io')(server);

server.listen(8090);

2. 데이터베이스에 변화가 있을 때마다 socket.io를 통해 클라이언트에 이벤트를 전송하는 코드를 작성합니다. 이러한 이벤트는 데이터베이스의 변화를 감지하고 그에 따른 액션을 수행하는 미들웨어나 트리거를 통해 발생시킬 수 있습니다.

// 가정: 'dbChange'는 데이터베이스 변화를 감지하는 함수라고 가정하였습니다.

dbChange.on('change', (data) => {

io.emit('DBUpdate', data);

});

3. 클라이언트에서 이벤트를 수신하는 코드를 작성합니다. 이 코드는 클라이언트의 JavaScript 파일에 추가해야 합니다.

var socket = io('http://localhost:8090');

socket.on('DBUpdate', function (data) {

// 여기에서 UI 업데이트를 수행합니다.

console.log(data);

});

위의 코드는 기본적인 방식을 설명한 것이며, 실제 구현시에는 보안 및 성능에 주의해야 합니다. 또한, 실시간 데이터 업데이트는 데이터베이스와 애플리케이션의 부하를 증가시킬 수 있므로, 이를 고려하여 설계해야 합니다.

또한, MS SQL에서는 특정 테이블에 대한 변경을 감지하는 기능을 제공하고 있습니다. 이를 사용하여 변경 사항을 감지하고, 이를 서버로 전달하여 클라이언트에게 알려줄 수 있습니다.

위의 방식은 기본적인 방식으로, 실제 구현에 필요한 세부 사항이나 예외 처리 등은 고려되지 않았습니다. 따라서 실제 구현시에는 본인의 상황에 맞게 적절히 수정하여 사용하시면 됩니다.

node.js syntax error 질문

... from 'socket.io' import { LLM } from 'llama-node... from 'llama-node/dist/llm/llama-cpp.js'; const app... // 사용자가 질문을 할 때 socket.on('ask...

node.js socket 통신 후

댓글에 답을 해주시지 않아서 1:1문의 드립니다. nodejs... var socket=io(); socket.on("redirect",function(data){ window.location.href=주소; }); 이런식으로 client의 JS코드를 짜라는...

[javascript] node.js 질문

... var io = require('socket.io')(server); app.use('/css',express.static(__dirname + '/css')); app.use('/js',express.static... 추천드립니다! 한번 배울 때 제대로 배우면...

node.js 질문있어요

제가 node.js 웹 채팅서버를 구현하고 있는데요. 클라이언트가... socket.io 모듈 사용을 기준으로 -- 서버 var http = require('http').Server(app); var...

node.js mongodb json연동

... 질문하시기 전에 구글링 먼저 해보시길 추천드립니다. https://poiemaweb.com/mongoose https://javafa.gitbooks.io/nodejs_server_basic/content/chapter12.html http...