2015-06-23 79 views
2

請看下面的代碼。這是nodeJS中的一個簡單程序。 問題是爲什麼disconnect未打印? (如果您取消註釋setTimeout,問題已消失) 真正的問題是什麼?:爲什麼我不能一起啓動socketIO客戶端和服務器,並在連接後立即關閉套接字?關於so​​cketIO連接的專有技術是什麼?什麼時候可以斷開套接字客戶端

"use strict"; 
var Promise = require("bluebird"); 
var socketio = require("socket.io"); 
var socketio_client = require("socket.io-client"); 
var http = require("http"); 

var port = 7457; 
var hostandport = "http://localhost:" + port.toString(); 

var server = socketio.listen(port); 

var client = socketio_client(hostandport); 

server.sockets.on("connect", function (socket) { 
    console.log("connect"); 
    socket.on("disconnect", function() { 
     console.log("disconnect"); 
    }); 

    //setTimeout(function() { 
     client.disconnect(); 
    //}, 1000); 
}); 
+1

使用socket.disconnect(); – karthick

+0

@OP你解決了你的問題嗎?我還沒有看到任何迴應,如「這工作」或「這沒有奏效,它給了我(錯誤404:示例錯誤未找到)。」 – Blubberguy22

回答

1

您已經設置了您的服務器不正確,而是執行此操作:

var server = require('http').createServer(handler); 
var io = require('socket.io')(server); 

io.on("connect", function (socket) { 
    console.log("connect"); 
    socket.on("disconnect", function() { 
     console.log("disconnect"); 
    }); 
//More importantly, you have done this part wrong, 
//the rest of your code may be functional, 
//but it does not adhere to what socket.io sets out in its own API 
//(http://socket.io/docs/) 
     socket.disconnect(); 
}); 
+0

對不起,遲到的迴應,我幾乎打完了這個,但我的電腦不斷崩潰。 – Blubberguy22

0

在Socket.io有沒有這樣的事情在服務器端和/或瀏覽器端的連接。只有一個連接。如果其中一方關閉它,則關閉。所以,你可以從服務器使用socket.disconnect關閉()

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
    setTimeout(function() { 
    socket.disconnect(); 
    }, 1000); 
}); 

轉到http://socket.io/get-started/chat/更多的澄清。

相關問題