_client.websocket.client.on('connectFailed', function (error) { if (_client.connection.state == states.connection.retryingConnection && scheduleReconnection(false)) { } else { _client.connection.state = states.connection.connectFailed; if (_client.serviceHandlers.connectFailed) { _client.serviceHandlers.connectFailed.apply(client, [error]); } else { console.log("Connect Failed!"); } } });
// event for connection success ws.once('connect', (connection) => { debug('connection to translation endpoint succeeded'); this.connection = connection; this.connection.sendFile = sendFile; this.connection.sendStream = sendStream; // return the successful socket connection for use return callback(null, connection); });
connect() { let uri = `ws${this.secureWs ? "s" : ""}://${this.zeroNetHost}/Websocket?wrapper_key=${this.wrapper_key}` signale.debug(uri) this.ws.connect(uri, null, null, null, {}) }
/** @return {Promise<Connection>} */ static connect(requestUrl, protocols, origin, headers, options) { return new Promise((resolve, reject) => { const client = new Client(); client.on('connect', (connection) => { resolve(connection); }); client.on('connectFailed', (err) => { reject(err); }); client.connect(requestUrl, protocols, origin, headers, options); }); }
onOpen(conn) { signale.success("ZeroNet websocket connected") conn.on("error", (x) => this.onError(x)) conn.on("close", (x) => this.onClose(x)) conn.on("message", (x) => this.onMsg(x)) this.conn = conn let i, len, message, ref ref = this.message_queue for (i = 0, len = ref.length; i < len; i++) { message = ref[i] this.ws.send(JSON.stringify(message)) } this.message_queue = [] this.emit("wsOpen") }
// Retrieve the access token axios.post(authHost, authData) .then((response) => { const loginData = response.data; console.log(`Generated token for user ${loginData.user}`); // This old token cause sa signature verification failed at CloudWatch // loginData.token = 'eyJraWQiOiJBSnlTb0ZuVVk3WlBVVVhMSG5DMnZWMXJmXC9TZ3RsaHYyTHN1Z3lrem5GMD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIyZjZmNmJkZi1jZDBiLTQ0NmYtYWMyNC1kZGEwM2RjN2UwMGQiLCJhdWQiOiIxNXJhZjQ1cWxrNTVjM2pjZ2dnYzI2aXR0NiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6Ijc5MTA4ZjZkLTFhZGItNDhiYy05NTg4LThiNzUxZTRlZTk5ZiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNTYzOTgzNTkzLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb21cL2V1LWNlbnRyYWwtMV9vT25vM1JrN04iLCJjb2duaXRvOnVzZXJuYW1lIjoiZGFtb3Jlc2EiLCJleHAiOjE1NjM5ODcxOTMsImlhdCI6MTU2Mzk4MzU5MywiZW1haWwiOiJkYW5pZWwuYW1vcmVzLmFsdmFyZXpAZXZlcmlzLmNvbSJ9.HPeiTBDwiZd-6Oe7OnyaEZjfEL5in4u1GqxtiA2mhF7aCoqZDDLqanicrRLW3M0x4xV3IdivwD5MdPE-T0WCts60pdnxIBKDBvajehLT-lrWdDv-7SKDXrgaYA4-ZuAmqcrmEN3NgTIVfXB5sMVkeahWAXnPPBiSdGDSCVdrYXTTmM-R8y0TQrAqp38x6u5pfpYmIktEnWqbafoU36nDlRxGBdt9dJ_Esm3Dux05MeILcoYBbo741uXNgsk3qr4pOF-4t0A8TiNSccsyFoSdqFy7B06CsHLckRSIcJQow4Vnn3Ojtg-GYrEuXzeOj8Ydlx-Yb9kvp451_LRMM3NuGQ","refresh":"eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.gHEqD6XveeyAx-Hqf_pJa-lT0jw-VzFStL8KS2szG5_WbEOFXqpi6lkciQDOczuCfRXHpwmfC8gESdz-BDxYDXvM18N0lWj5Ro-0v9LtJ2zOntZqYyclb-Z6Kr0HYFlAw3R3seBC2lUx37DKasrlsDhMyu1-n3JMth8D3uvjPxmduDu3XRxUdSG07qGyc2nagUU9846vd67cA1fPzgoi6rdHb-dK-yqF_XKqYI5cMIOslB7Enx8rcWlZOplmB_VJHM1DBFSAW2xjWiSWSwrNxNnODln8b8cXEk0nOmOpQj6bW0LSHu0pmNFvP3-OId84oCqpF6GV3uAWENiG5SO6UA.DR_yq8TlySkdRjPl.2LYsjn7qhQAYJxtFm862EklbL-DUd7Uc6f9r69UqpaGnRccsZ6IKxSHW4WS3nr-9Q-_Lk5LWDgNPAymdSV9Pj0OtBXDMrktjGukffpDKcr5-Kiqk9vcGvC0ylYWcapHvZSwi8wj8qLawsVhgmIULh-34w9NxX6EPTFwFNc5nZEoZkcCsfTw3IEIinE_ulTNJdfkwpMdvndx9X0-XwKtu7946H1NGJ2XJWZxLhmrSuTHwIjnu8JFBLcYb44SlDj36yv25rOW3Sx-z0AN0HRoW_Brs1tcLonmtkar7Fz9F2XDZVqytJf4HmulSI8ex6WXvO22fHP9ZJAc32r3K455i2llBftgtcOse_WdInr-6_BHZlKOAncCdlLkIpoyAMy2U5xWTYAiIiD4Up24inzh60wQgfaQqcTmDymW7avXAqTAxnr2y34atU0-nMmYifBEuaKIakzvaNXXrUgZFejDKlw2oPc1PY5yIxr63USv3iqLIxaDkmbqU43jq87EVQyl454jaM-eVL-iJvjpZBwxOoCQLCCw4YakRnxt5y7Bbtk0itpUfIEkoGjdkRveMm0gDwolF3LHAvEdNPEXiz6MDr9uWNEijBxvBI42afBv2BIjxfYKeC71BERaMXaV8nAJA2wsC2VFueX2YJLLVbLLnB_uYf6Eb84xKsABlYI__yHYxPrulT2_rwMufmE1Sa12qrNQFl3PeqhY9pqyBXLhogF-0iuMPg2y2b80co0sh2NVvHzAngNg45rOYPPbMCVpg7x65ypAXkf9XK7pIuAl4EzmTbn_KJGQHnY1hDuzdnPdLQ_3GgiaQSXldCT7scxFNchJleR3VWtd9tYtwl8TgKowFOHmn0-knAjgzH4QkA-Wwf4EEe9EuT5hUDdOIK4CFEMx9-qEGeGkOhzr8xb4cb82nddZU5jBzFGL5FKSY2h_RWGbGuffgpORq8GZN_OX665iJMQoXyC37mfCiZ3s2wj9ygzhzTgPUVQ-fbN0G9-aioL6DnYHk4uiuPylTn5MZeWtRY7qW8lpaz5QsexPy8rNxHMl43yBToaxPcddKBKdEVVgc_jp2a8U4kaS8Ea-lBwYH9yzHYwVOqm8xXNHHHVit-FfDN60-s2YmhDClCzmVWR7VaFEem_LTWhhHH3urPnkVRXutdl-SEV4AaKF7wdMUSGRoERQPxmVhKbhVooQiTZuDWc0SUsAKouB-B-r_BjmHZmlzOwVQVw_hZSCept_hLtmXXv7PEIhyBR1zHnOPPHsM8s4KYFjP-Ls5pZpWieO1IZwU2rGq-MSXZmEM.ie2DRoTujV4tGJO5xXtJEg'; // Use the retrieved access token to connect to the socket. // If Authorizer is not added to the request, server delivers a 401 response. // If an invalid Authorizer is added, server delivers a 500 response client.connect(`${host}?connectionType=${event}&Authorizer=${loginData.token}`); }) .catch((err) => { console.error('Unable to initialize socket connection', err.toString()); });
const makeTest = protocols => test => { const server = jstp.ws.createServer([app]); test.tearDown(() => { server.close(); }); server.listen(0, () => { const client = new WebSocketClient(); const url = `ws://localhost:${server.address().port}`; client.once('connect', connection => { connection.close(); test.fail('unreachable code: WS protocol negotiation is probably broken'); test.end(); }); client.once('connectFailed', () => { test.end(); }); client.connect(url, protocols); }); }
this.client.on('connect', function(connection) { if (successCallback != undefined) successCallback(); connection.on('error', function(error) { if (errorCallback != undefined) errorCallback(error.toString()); }); connection.on('close', function() { api.client = undefined; }); connection.on('message', function(message) { if (message.type === 'utf8') { var json = parser.convert(message.utf8Data); api.socketUpdate(json.updates); } }); });
init(wrapper_key, zeroNetHost = "localhost:43110", secureWs = false) { if (!wrapper_key) throw "No wrapper_key" this.wrapper_key = wrapper_key this.zeroNetHost = zeroNetHost this.secureWs = secureWs this.waiting_cb = {} this.message_queue = [] this.next_message_id = 1 signale.info("Creating websocket connection") this.ws = new WebsocketClient({ maxReceivedMessageSize: 83886080, maxReceivedFrameSize: 83886080 }) this.ws.on("connect", x => this.onOpen(x)) this.ws.on("connectFailed", x => this.onError(x)) this.connect() this.inited = true }
// Create and connect WebSocketClient to get WebSocketConnection. // webSocketConfig - web socket client configuration, passed directly // to WebSocketClient constructor // options - will be destructured and passed directly to // WebSocketClient.connect. The last argument of options // is optional callback that will be called when connection // is established. // const connectionFactory = (webSocketConfig, ...options) => { const callback = common.extractCallback(options); const wsClient = new WebSocketClient(webSocketConfig); options[1] = constants.WEBSOCKET_PROTOCOL_NAME; wsClient.once('connect', connection => { callback(null, connection); }); wsClient.once('connectFailed', callback); wsClient.connect(...options); }
// event for connection failure ws.once('connectFailed', (error) => { debug('connection to translation endpoint failed:', error); return callback(error); });
this.client.on('connectFailed', function(error) { if (errorCallback != undefined) errorCallback(error.toString()); });
// Retrieve the access token axios.post(authHost, authData) .then((response) => { const loginData = response.data; console.log(`Generated token for user ${loginData.user}`); // This old token cause sa signature verification failed at CloudWatch // loginData.token = 'eyJraWQiOiJBSnlTb0ZuVVk3WlBVVVhMSG5DMnZWMXJmXC9TZ3RsaHYyTHN1Z3lrem5GMD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIyZjZmNmJkZi1jZDBiLTQ0NmYtYWMyNC1kZGEwM2RjN2UwMGQiLCJhdWQiOiIxNXJhZjQ1cWxrNTVjM2pjZ2dnYzI2aXR0NiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJldmVudF9pZCI6Ijc5MTA4ZjZkLTFhZGItNDhiYy05NTg4LThiNzUxZTRlZTk5ZiIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNTYzOTgzNTkzLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb21cL2V1LWNlbnRyYWwtMV9vT25vM1JrN04iLCJjb2duaXRvOnVzZXJuYW1lIjoiZGFtb3Jlc2EiLCJleHAiOjE1NjM5ODcxOTMsImlhdCI6MTU2Mzk4MzU5MywiZW1haWwiOiJkYW5pZWwuYW1vcmVzLmFsdmFyZXpAZXZlcmlzLmNvbSJ9.HPeiTBDwiZd-6Oe7OnyaEZjfEL5in4u1GqxtiA2mhF7aCoqZDDLqanicrRLW3M0x4xV3IdivwD5MdPE-T0WCts60pdnxIBKDBvajehLT-lrWdDv-7SKDXrgaYA4-ZuAmqcrmEN3NgTIVfXB5sMVkeahWAXnPPBiSdGDSCVdrYXTTmM-R8y0TQrAqp38x6u5pfpYmIktEnWqbafoU36nDlRxGBdt9dJ_Esm3Dux05MeILcoYBbo741uXNgsk3qr4pOF-4t0A8TiNSccsyFoSdqFy7B06CsHLckRSIcJQow4Vnn3Ojtg-GYrEuXzeOj8Ydlx-Yb9kvp451_LRMM3NuGQ","refresh":"eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.gHEqD6XveeyAx-Hqf_pJa-lT0jw-VzFStL8KS2szG5_WbEOFXqpi6lkciQDOczuCfRXHpwmfC8gESdz-BDxYDXvM18N0lWj5Ro-0v9LtJ2zOntZqYyclb-Z6Kr0HYFlAw3R3seBC2lUx37DKasrlsDhMyu1-n3JMth8D3uvjPxmduDu3XRxUdSG07qGyc2nagUU9846vd67cA1fPzgoi6rdHb-dK-yqF_XKqYI5cMIOslB7Enx8rcWlZOplmB_VJHM1DBFSAW2xjWiSWSwrNxNnODln8b8cXEk0nOmOpQj6bW0LSHu0pmNFvP3-OId84oCqpF6GV3uAWENiG5SO6UA.DR_yq8TlySkdRjPl.2LYsjn7qhQAYJxtFm862EklbL-DUd7Uc6f9r69UqpaGnRccsZ6IKxSHW4WS3nr-9Q-_Lk5LWDgNPAymdSV9Pj0OtBXDMrktjGukffpDKcr5-Kiqk9vcGvC0ylYWcapHvZSwi8wj8qLawsVhgmIULh-34w9NxX6EPTFwFNc5nZEoZkcCsfTw3IEIinE_ulTNJdfkwpMdvndx9X0-XwKtu7946H1NGJ2XJWZxLhmrSuTHwIjnu8JFBLcYb44SlDj36yv25rOW3Sx-z0AN0HRoW_Brs1tcLonmtkar7Fz9F2XDZVqytJf4HmulSI8ex6WXvO22fHP9ZJAc32r3K455i2llBftgtcOse_WdInr-6_BHZlKOAncCdlLkIpoyAMy2U5xWTYAiIiD4Up24inzh60wQgfaQqcTmDymW7avXAqTAxnr2y34atU0-nMmYifBEuaKIakzvaNXXrUgZFejDKlw2oPc1PY5yIxr63USv3iqLIxaDkmbqU43jq87EVQyl454jaM-eVL-iJvjpZBwxOoCQLCCw4YakRnxt5y7Bbtk0itpUfIEkoGjdkRveMm0gDwolF3LHAvEdNPEXiz6MDr9uWNEijBxvBI42afBv2BIjxfYKeC71BERaMXaV8nAJA2wsC2VFueX2YJLLVbLLnB_uYf6Eb84xKsABlYI__yHYxPrulT2_rwMufmE1Sa12qrNQFl3PeqhY9pqyBXLhogF-0iuMPg2y2b80co0sh2NVvHzAngNg45rOYPPbMCVpg7x65ypAXkf9XK7pIuAl4EzmTbn_KJGQHnY1hDuzdnPdLQ_3GgiaQSXldCT7scxFNchJleR3VWtd9tYtwl8TgKowFOHmn0-knAjgzH4QkA-Wwf4EEe9EuT5hUDdOIK4CFEMx9-qEGeGkOhzr8xb4cb82nddZU5jBzFGL5FKSY2h_RWGbGuffgpORq8GZN_OX665iJMQoXyC37mfCiZ3s2wj9ygzhzTgPUVQ-fbN0G9-aioL6DnYHk4uiuPylTn5MZeWtRY7qW8lpaz5QsexPy8rNxHMl43yBToaxPcddKBKdEVVgc_jp2a8U4kaS8Ea-lBwYH9yzHYwVOqm8xXNHHHVit-FfDN60-s2YmhDClCzmVWR7VaFEem_LTWhhHH3urPnkVRXutdl-SEV4AaKF7wdMUSGRoERQPxmVhKbhVooQiTZuDWc0SUsAKouB-B-r_BjmHZmlzOwVQVw_hZSCept_hLtmXXv7PEIhyBR1zHnOPPHsM8s4KYFjP-Ls5pZpWieO1IZwU2rGq-MSXZmEM.ie2DRoTujV4tGJO5xXtJEg'; // Use the retrieved access token to connect to the socket. // If Authorizer is not added to the request, server delivers a 401 response. // If an invalid Authorizer is added, server delivers a 500 response client.connect(`${host}?connectionType=${event}&Authorizer=${loginData.token}`); }) .catch((err) => { console.error('Unable to initialize socket connection', err.toString()); });