익스프레스를 사용하여 내 사이트를 생성합니다 (예 : express mysite). 내 사이트에 socket.io 지원을 추가합니다. 하지만 내 socket.io 클라이언트가 서버에 연결하려고하면 서버가 '연결'이벤트 (.on ('connection', function (socket) ...)를 수신하고 클라이언트가 메시지를받지 못했다는 것을 알게되었습니다. 내/빈/www가에서socket.io는 node.js 서버에서 작동하지 않습니다. (익스프레스 포함)
var app = require('../app');
var debug = require('debug')('mysite:server');
var http = require('http');
var https= require('https');
var fs = require('fs');
//Get port from environment and store in Express.
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
app.set('httpsport', 443);
//Create HTTP server.
var options = {
key: fs.readFileSync('.\file.pem'),
cert: fs.readFileSync('.\file.crt')
};
var server = http.createServer(app);
var httpsServer = https.createServer(options, app).listen(app.get('httpsport'));
//Listen on provided port, on all network interfaces.
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
//Normalize a port into a number, string, or false.
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
//Event listener for HTTP server "error" event.
function onError(error) {
..........
}
//Event listener for HTTP server "listening" event.
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
//socket.io
var io = require('socket.io')(httpsServer);
io.on('connection', function(socket) {
//keep printing 'new connection' string in console
console.log('new connection');
//client doesn't receive this message
socket.emit('message', {'message': 'hello world'});
});
내 고객 :
<html>
<head>
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
</head>
<body>
<script>
var URL_SERVER = 'https://localhost:443';
var socket = io.connect(URL_SERVER);
socket.on('message', function(data) {
$('#message').text(data.message);
});
</script>
<div id="message">Message</div>
</body>
</html>
어떤 제안
socket.io의 veriosn이이 문제를 일으켰습니다! 고마워요! 너는 내 하루를 구한다! – jones321