MFC based socket.io-client-cpp 모듈

반응형
728x90
반응형
 
 
Introduction

결과물만 업로드 하는 포스팅입니다. 
이전 포스팅에 이어 socket.io-client-cpp 를 이용하여 MFC에 추가작업을 진행하였습니다. 물론, 한글 인코딩 문제와 여러가지 문제들을 해결을 완료하였습니다. 사용방법은  nodejs 기반에 Web서버가 있고,  아래와 같이 message를 구현해주시면 됩니다. 
 
 
#node.js 기반 Web서버 예제 (node.js 관련 도서 책 참고)
 
// 'message' 이벤트를 받았을 때의 처리
    socket.on('message', function(message) {
        console.log('message 이벤트를 받았습니다.');
        console.dir(message);
        
        if (message.recepient =='ALL') {
            // 나를 포함한 모든 클라이언트에게 메시지 전달
            console.dir('나를 포함한 모든 클라이언트에게 message 이벤트를 전송합니다.')
            io.sockets.emit('message', message);
        } else {
            // command 속성으로 일대일 채팅과 그룹채팅 구분
            if (message.command == 'chat') {
                // 일대일 채팅 대상에게 메시지 전달
                if (login_ids[message.recepient]) {
                    io.sockets.connected[login_ids[message.recepient]].emit('message', message);
                    
                    // 응답 메시지 전송
                    sendResponse(socket, 'message', '200', '메시지를 전송했습니다.');
                } else {
                    // 응답 메시지 전송
                    sendResponse(socket, 'login', '404', '상대방의 로그인 ID를 찾을 수 없습니다.');
                }
            } else if (message.command == 'groupchat') {
                // 방에 들어있는 모든 사용자에게 메시지 전달
                io.sockets.in(message.recepient).emit('message', message);
                    
                // 응답 메시지 전송
                sendResponse(socket, 'message', '200', '방 [' + message.recepient + ']의 모든 사용자들에게 메시지를 전송했습니다.');
            }
            
        }
    });
 
 
결과

 
 
 
저는 로컬Nas서버를 돌리고 있기때문에 서버구축 후, 웹으로 바로 접속하였습니다. : ) 한글 전송도 문제 없고, web이랑 전송도 잘되고 말이죠. 또한 iOS와 채팅작업도 끝냈기때문에 이제 콘텐츠만 올리면 되네요
오늘도 조금씩 작업 하고 블로그에 업로드 합니다. 
 
 
Error

 
MFC 기반에서 빌드를 하게 될 경우, 아래와 같은 오류가 발생하게 됩니다. 이런 경우, 오류를 찾아 수정을 하면서 바로바로 메모를 해두고 있습니다. 양식은 지저분하더라도, 알아보기에만 적합하면 될 것 같아 그대로 남겨두고 갑니다. 
 
 
Severity    Code    Description    Project    File    Line    Suppression State
Error    LNK2001    unresolved external symbol "public: __cdecl boost::random::random_device::~random_device(void)" (??1random_device@random@boost@@QEAA@XZ)    SocketIOClient    D:\Sources\NasGitLab\mfcdialogsocketio\SocketIOClient\SocketIOClient\sio_client_impl.obj    1
 
이런 오류가 발생할 경우, 아래와 같이 수정하면 됩니다.
 
sio_client_impl.h
#include <cstdint>
#ifdef _WIN32
    #define _WEBSOCKETPP_CPP11_THREAD_
    #define BOOST_ALL_NO_LIB
    #define _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ // <-- 주석해제
    #define _WEBSOCKETPP_NO_CPP11_FUNCTIONAL_
    #define INTIALIZER(__TYPE__)
#else
    #define _WEBSOCKETPP_CPP11_STL_ 1
    #define INTIALIZER(__TYPE__) (__TYPE__)
#endif
 
728x90
반응형

댓글

Designed by JB FACTORY