我想连接两个使用socket.io和socket.io客户端的node.js服务器。在这两种情况下,我都使用v0.9.16。socket.io客户端不连接
就我而言,我将服务器称为STREAM SERVER和ACTIVITY SERVER,其中活动服务器使用socket.io-client模块。
流服务器 - (ON THE服务器中的代码,其作用类似于服务器)
var https = require('https');
var express = require('express');
var socket = require('socket.io');
var securePort = (process.env.LOCAL_HTTPS_PORT || 443);
var sslOptions = //CERTIFICATE
var socketIoConfiguration = //CONFIG VALUES
var app = express();
var server = https.createServer(sslOptions, app);
var io = socket.listen(server, socketIoConfiguration('activityToStream'));
io.sockets.on('connection', function (socket) {
console.log('Activity server connected to stream server.');
});
server.listen(securePort);
ACTIVITY SERVER - (ON,其作用类似于客户端对服务器的代码)
var socketClientModule = require('socket.io-client');
var streamConnectionServer = 'https://165.225.144.273:443';
var activityToStreamSocket = socketClientModule.connect(streamConnectionServer);
activityToStreamSocket.on('connect', function(socket){
console.log('Connected to Stream Server');
});
当我运行此代码,我没有收到任何服务器发送的任何消息。然而,当我在Chrome中投放的HTML页面运行这段代码,我看到在流服务器的输出消息:
<!DOCTYPE html>
<html>
<head>
<title>
Test
</title>
<script src="https://165.225.144.273/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('https://165.225.144.273');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</head>
<body>
Hello World
</body>
</html>
流服务器消息时,客户端运行在Chrome
debug: client authorized
info: handshake authorized UaUDRsA3ZBTgdsiLDCrl
debug: setting request GET /socket.io/1/websocket/UaUDRsA3ZBTgdsiLDCrl
debug: set heartbeat interval for client UaUDRsA3ZBTgdsiLDCrl
debug: client authorized for
debug: websocket writing 1::
所以,它使我认为问题是与我的“ACTIVITY服务器”运行socket.io客户端,但我不明白为什么它根本不工作(没有错误信息等)
尝试使用简单的WS lib连接到SocketIo服务器:http://einaros.github.io/ws/对我很好。它还有一个叫做wscat的漂亮实用程序库。 – jcollum
这是一个低级别的模块。这不需要我实现自己的心跳,断开/重新连接等? –