socket.io를 사용하여 채팅 프로그램을 작동 시키려고하는데 제대로 작동하지 않습니다.이벤트를 Socket.IO에 이벤트를 서버에서 작동하지 않음
Node.js 서버를 사용하고 있는데 제대로 실행되고있는 것으로 보입니다. 나는 이것이 방으로 방출하는 것과 관련이 있다고 생각한다.
내가 클라이언트 브라우저에있는 코드는 다음과 같습니다 페이지가로드, Socket.IO에 때
<script>
var socket = io("https://localhost:3000/userChat");
socket.on('connect', function(){
socket.emit('initialiseConnection', "user1");
});
socket.on('messageIn', function(msg){
console.log(msg);
$('#messages').append($('<li>').text(msg.message));
});
</script>
그렇게는 서버에 연결하여 "사용자 1"로 서버에 "initialiseConnection"이벤트를 방출한다. 이는 해당 사용자를위한 새로운 방입니다. 서버
는, 내가 "initialiseConnection"를 처리 한 코드는 다음과 같습니다
socket.on("initialiseConnection", function(username){
socket.join(username);
console.log(username + " has joined.");
Message.find({recipient:username}, function (err, message){
console.log("messages for "+username+": "+message.length);
for (var x = 0; x < message.length; x++){
console.log(username+"'s message "+x);
console.log(message[x]);
socket.to(username).emit("messageIn", {"message":message[x]});
}
});
});
당신이 볼 수있는이 코드는 생성하고 사용자 이름과 동일한 이름을 가진 방을 결합한다. 데이터베이스에서 모든 메시지를 검색하여 해당 메시지를 사용자에게 보내려고합니다. 나는 메시지를 기록한다. 분명히 메시지가 있고 "socket.to()"메소드의 사용자 이름도 올바르게 로그에 표시됩니다. 하지만 클라이언트 브라우저의 "socket.on ('messageIn')"은 이벤트를 선택하지 않는 것 같습니다. 이것은
을 완료하는 데 필요한 몇 가지 backbround 처리에 관련이 경우에 내가있을 수 있습니다 어디사람이 볼 수
setTimeout(function() {
socket.to(username).emit("messageIn", {"message":"test message"});
}, 5000);
을 즉시 socket.join() 후 :
는 또한 퍼팅 시도 이것에 잘못 갔어?감사합니다.
--edit 1 --------------------------------------
var https = require('https');
var express = require('express');
var app = express();
var server = https.createServer(https_options, app).listen(3000);
var io = require('socket.io')(server);
var userChat = io.of("/userChat");
userChat.on('connection', function(socket){
console.log('a user connected');
socket.on("initialiseConnection", function(username){
...
});
socket.on('disconnect', function(){
socket.leave(socket.room);
});
});
연결 이벤트를 수신 한 다음 각 수신 소켓에 이벤트 처리기를 바인딩하는 서버 측 코드의 다른 부분은 어디에 있습니까? 당신이 그것을 포함하지 않았기 때문에 그것이 문제가되는 곳인지 궁금합니다. – jfriend00
EDIT 1에 줄이기 버전을 추가했습니다. 더 필요한 경우 알려주세요. 비록 그것이 한 방향으로 연결할 수 있다면 나는 가질 수 있지만. 반대 방향으로도 통신이 가능합니다. – X0r0N