我想實現一個應用程序IM使用快車3創建私有信息和socket.ioSocket.io兩個客戶端添加到
當客戶端連接與客戶的用戶ID的房間會自動創建並加入。這主要是爲了通知和那種東西。現在即時通訊也試圖讓這項工作也適用於私人聊天。當用戶點擊發送按鈕時,郵件會與發件人的用戶標識(來自會話用戶標識)以及從隱藏字段或屬性中獲取的所有者用戶標識一起發送的元素。發件人加入擁有所有者userid命名空間的房間。問題在於,當發件人轉到另一個頁面或刷新瀏覽器時,他會從房間中連接,並且不會收到來自所有者的任何其他消息。他必須發送一條新消息重新加入主人房間。現在,我如何percist與業主房間的連接?還是我這樣做都錯了?有沒有更好的或標準的方法來實現這一目標?
SERVER:
io.on('connection', function (socket) {
var sh = socket.handshake;
socket.join(sh.session.userid);
socket.on('chat', function (data) {
if (data.user) {
socket.join(data.owner);
}
io.sockets.in(data.owner).emit('chat',
{user: sh.session.user, message: data.message});
});
});
客戶:
var socket = io.connect('https://localhost/');
$('#send_message').click(function (e) {
socket.emit('chat',{message: $('.message').val(),
user:$('#user'), owner:$('#owner')} //Get this from hidden fields in chat form);
e.preventDefault();
});
socket.on('chat', function (data) {
$('ol').prepend('<li>' + data.user + '<br />' + data.message + '</li>');
});
默認情況下,客戶端不重新連接到服務器嗎?在網站上登錄並刷新網站有什麼不同?兩次執行相同的代碼,對吧? – Amberlamps