簡體   English   中英

Node.js 中的 Websocket 連接在發送時關閉

[英]Websocket connection in Node.js closes on sending

我嘗試了許多不同的 npm web socket 庫(WebSocket、ws、express-ws 等),但在每個庫中我都遇到了同樣的問題。 當我嘗試發送 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 10 上運行。感謝您的幫助! 謝謝!

我發現是我的防病毒軟件的網絡保護阻止了連接。 我為我的本地主機地址做了一個例外,它現在工作得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM