2016-09-28 12 views
1

私は多くの異なるnpm Webソケットライブラリ(WebSocket、ws、express-wsなど)を試しましたが、私は同じ問題を抱えています。 websocketメッセージを送信しようとすると、接続が終了します。 私はmessegesを受け取っても問題はありません。ここNode.jsでのWebsocket接続の終了時に閉じます

ExpressとWSライブラリを一つのテストの一つの簡単な例である: のNode.js側:

var server = require('http').createServer() 
 
    , url = require('url') 
 
    , WebSocketServer = require('ws').Server 
 
    , wss = new WebSocketServer({ server: server }) 
 
    , express = require('express') 
 
    , app = express() 
 
    , port = 8080 
 
    , fs = require('fs'); 
 

 
app.use(function (req, res) { 
 
    var index = fs.readFileSync('./interface/index.html'); 
 
    res.end(index); 
 
}); 
 

 
wss.on('connection', function connection(ws) { 
 
    var location = url.parse(ws.upgradeReq.url, true); 
 
    console.log('open ws'); 
 
    ws.on('message', function incoming(message) { 
 
    console.log('received: %s', message); 
 
    ws.send('test back'); 
 
    }); 
 

 
    ws.on('close', function() { 
 
    console.log('ws connection closed.'); 
 
    }) 
 
}); 
 

 
server.on('request', app); 
 
server.listen(port, function() { console.log('Listening on ' + server.address().port) });

とブラウザ側(」./interface/index.html 「):

window.WebSocket = window.WebSocket || window.MozWebSocket; 
 
var port = 8080; 
 
var ip = window.location.hostname; 
 
var connection; 
 

 
connection = new WebSocket('ws://' + ip + ':' + port); 
 

 
connection.onopen = function() { 
 
    // connection is opened and ready to use 
 
    console.log('Web socket connection with', ip + ':' + port); 
 
    //sendQueue(msgQueue); 
 

 
}; 
 

 
connection.onerror = function (error) { 
 
    // an error occurred when sending/receiving data 
 
    console.log('Web socket erorr with', ip + ':' + port + ':', error); 
 
}; 
 

 
connection.onmessage = function (message) { 
 
    // try to decode json (I assume that each message from server is json) 
 
    console.log("Received ws"); 
 
    // handle incoming message 
 
}; 
 

 
connection.onclose = function(){ 
 
    console.log("Web socket connection lost."); 
 
}; 
 

 
function sendws() { 
 
    connection.send("test"); 
 
    console.log("sent ws"); 
 
    return false; 
 
}
<head> 
 
    <meta charset="utf-8"> 
 

 
    <title>Simple Web Socket test</title> 
 
    <!--<meta name="description" content="Simple Web Socket">--> 
 
    <meta name="author" content="Binoman"> 
 

 
    <link rel="stylesheet" href="css/styles.css?v=1.0"> 
 

 
    <!--[if lt IE 9]> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script> 
 
    <![endif]--> 
 
</head> 
 

 
<body> 
 
    <button type="button" name="button" onclick="sendws()">Send</button> 
 
</body>

なぜこれが起こっているのかわかりません。 Node.jsを6.7に更新しました。 Windowsで実行中。 私は助けてくれてありがとう! ありがとう!

+1

お客様のクライアント側コードはサーバー側と同じです。 –

+0

貼り付けが間違っています。ごめんなさい。私はすぐにそれを更新します。 – Binoman

+0

クライアントコードはどこですか? – jfriend00

答えて

1

私は、接続をブロックするウイルス対策のWebプロテクションであることを発見しました。私は自分のローカルホストアドレスの例外を作成し、今は完全に動作しています。

+0

がまったく同じことがありました。激しい!詳細については、私はKasperskyを使用していました。 – Alec

関連する問題