Gau*_*pal 6 javascript websocket node.js
我知道这个问题问了很多次,但我没有得到任何对我有用的答案。所以我发布它。
我有两个文件,一个是 test.html,它是 .
<script src="js/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(function () {
// if user is running mozilla then use it's built-in WebSocket
window.WebSocket = window.WebSocket || window.MozWebSocket;
var connection = new WebSocket('ws://localhost:8080/');
connection.onopen = function () {
// connection is opened and ready to use
alert('connection Open');
};
connection.onerror = function (error) {
// an error occurred when sending/receiving data
alert('Error');
};
connection.onmessage = function (message) {
alert('Message');
};
});
</script>
Run Code Online (Sandbox Code Playgroud)
还有一个 nodejs 文件,它是
var WebSocketServer = require('websocket').server;
var http = require('http');
var server = http.createServer(function(request, response) {
console.log((new Date()) + ' Received request for ' + request.url);
response.writeHead(404);
response.end();
});
server.listen(8080, function() {
console.log((new Date()) + ' Server is listening on port 8080');
});
wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
function originIsAllowed(origin) {
return true;
}
wsServer.on('request', function(request) {
if (!originIsAllowed(request.origin)) {
request.reject();
console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.');
return;
}
var connection = request.accept('echo-protocol', request.origin);
console.log((new Date()) + ' Connection accepted.');
connection.on('message', function(message) {
console.log(message);
connection.sendBytes(message);
});
connection.on('close', function(reasonCode, description) {
console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
});
});
Run Code Online (Sandbox Code Playgroud)
当我尝试使用我的 html 文件连接 web-socket 时,它给了我一个错误,即“Firefox 无法在 ws://localhost:8080/ 上建立到服务器的连接”
预先感谢您的帮助。
它应该能够找到并连接到服务器,但服务器将拒绝您的请求并关闭,因为request.accept('echo-protocol', request.origin)在您的服务器文件中。
检查nodejs命令提示符的日志。
要解决这个问题只需修改
var connection = new WebSocket('ws://localhost:8080/');
Run Code Online (Sandbox Code Playgroud)
到
var connection = new WebSocket('ws://localhost:8080/', 'echo-protocol');
Run Code Online (Sandbox Code Playgroud)