저는 Nodejs와 Socket.io를 처음 사용합니다. 이것은 채팅 응용 프로그램을 만들 때 처음이기 때문에 바보 같은 질문을하는 경우 용서해주십시오.Nodejs 소켓 io 서버 - 클라이언트를 여러 개 만드는 방법은 무엇입니까?
내 웹에서 나는 종류의 채팅 서비스가 있어야합니다. 하나는 대화방의 종류이며 다른 하나는 Facebook Messenger와 같은 개인 메시징입니다.
나는 대화 ID를 확인하는 메시지를 표시하기 전에 개인 메신저로 모두 만들었으므로 매우 적절하게 작동합니다. 라이브 토론 또한 적절하게 작동합니다.
하지만 문제가 있습니다. 라이브 메신저에서 보낸 모든 메시지는 실시간 토론 창에도 표시됩니다. 그래서 메신저에 대한 Server.js 파일을 변경하고 수신 포트를 변경했습니다. 이제 라이브 토론의 수신 포트는 3000이고 메신저는 8050이지만 여전히 메신저 메시지를 수신하는 라이브 토론입니다.
내가 잘못하고 있나? 두 가지 채팅 응용 프로그램을 실행할 수있는 다른 방법이 있습니까?
나는 네임 스페이스를 server.js
var nsp = io.of('/debate')
nsp.on('connection', function (socket) {
console.log("client connected"+socket.id);
var redisClient = redis.createClient();
redisClient.subscribe('message');
var redisClient1 = redis.createClient();
redisClient1.subscribe('debate');
redisClient.on("message", function(channel, data) {
console.log("mew message add in queue "+ data+ " channel");
nsp.emit(channel, data);
});
socket.on('disconnect', function() {
redisClient.quit();
});
});
클라이언트 코드
var socket = io.connect('http://localhost:3000/debate');
socket.on('message', function (data) {
data = jQuery.parseJSON(data);
console.log(data.user);
$("#messages").append("<strong>"+data.user+":</strong><p>"+data.message+"</p>");
$('#messages').animate({
scrollTop: $('#messages').get(0).scrollHeight}, 200);
});
이것은 내가 원하는 것이지만, namesapce를 사용하면 내 클라이언트가 연결되지 않습니다. 나는 또한 socket.to (socket.id) .emit (channel, data);를 사용했다. 이 클라이언트는 클라이언트에 연결되지만 데이터는 방출되지 않습니다. 이름 공간 코드로 질문을 편집했습니다. 한번 봐주세요. – vinita