tien commented on code in PR #2506:
URL: https://github.com/apache/tinkerpop/pull/2506#discussion_r1506851088
##########
gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.js:
##########
@@ -230,92 +213,82 @@ class Connection extends EventEmitter {
};
const request_buf = this._writer.writeRequest(request);
- const message = Buffer.concat([this._header_buf, request_buf]);
+ const message = utils.toArrayBuffer(Buffer.concat([this._header_buf,
request_buf]));
this._ws.send(message);
})
.catch((err) => readableStream.destroy(err));
return readableStream;
}
- _getDefaultReader(mimeType) {
+ #getDefaultReader(mimeType) {
if (mimeType === graphBinaryMimeType) {
return graphBinaryReader;
}
return mimeType === graphSON2MimeType ? new serializer.GraphSON2Reader() :
new serializer.GraphSONReader();
}
- _getDefaultWriter(mimeType) {
+ #getDefaultWriter(mimeType) {
if (mimeType === graphBinaryMimeType) {
return graphBinaryWriter;
}
return mimeType === graphSON2MimeType ? new serializer.GraphSON2Writer() :
new serializer.GraphSONWriter();
}
- _pingHeartbeat() {
- if (this._pingInterval) {
- clearInterval(this._pingInterval);
- this._pingInterval = null;
- }
+ #handleOpen = () => {
+ this._openPromise.resolve();
+ this.isOpen = true;
+ };
- this._pingInterval = setInterval(() => {
- if (this.isOpen === false) {
- // in case of if not open..
- if (this._pingInterval) {
- clearInterval(this._pingInterval);
- this._pingInterval = null;
- }
- }
-
- this._pongTimeout = setTimeout(() => {
- this._ws.terminate();
- }, this._pongTimeoutDelay);
-
- this._ws.ping();
- }, this._pingIntervalDelay);
- }
-
- _handleError(err) {
- this.emit('log', `ws error ${err}`);
- this._cleanupWebsocket(err);
- this.emit('socketError', err);
- }
+ /**
+ * @param {Event} event
+ */
+ #handleError = ({ error }) => {
+ this._openPromise.reject(error);
+ this.emit('log', `ws error ${error}`);
+ this.#cleanupWebsocket(error);
+ this.emit('socketError', error);
+ };
- _handleClose(code, message) {
+ /**
+ * @param {CloseEvent} event
+ */
+ #handleClose = ({ code, message }) => {
this.emit('log', `ws close code=${code} message=${message}`);
- this._cleanupWebsocket();
+ this.#cleanupWebsocket();
if (this._closeCallback) {
this._closeCallback();
}
this.emit('close', code, message);
- }
+ };
+
+ /**
+ * @param {MessageEvent<any>} event
+ */
+ #handleMessage = ({ data: _data }) => {
+ const data = _data instanceof ArrayBuffer ? Buffer.from(_data) : _data;
- _handleMessage(data) {
const response = this._reader.readResponse(data);
if (response.requestId === null || response.requestId === undefined) {
// There was a serialization issue on the server that prevented the
parsing of the request id
// We invoke any of the pending handlers with an error
Object.keys(this._responseHandlers).forEach((requestId) => {
const handler = this._responseHandlers[requestId];
- this._clearHandler(requestId);
+ this.#clearHandler(requestId);
if (response.status !== undefined && response.status.message) {
return handler.callback(
// TINKERPOP-2285: keep the old server error message in case folks
are parsing that - fix in a future breaking version
new ResponseError(
- util.format(
- 'Server error (no request information): %s (%d)',
- response.status.message,
- response.status.code,
- ),
+ `Server error (no request information):
${response.status.message} (${response.status.code})`,
response.status,
),
);
}
// TINKERPOP-2285: keep the old server error message in case folks are
parsing that - fix in a future breaking version
return handler.callback(
- new ResponseError(util.format('Server error (no request
information): %j', response), response.status),
+ new ResponseError(`Server error (no request information):
${response}`, response.status),
Review Comment:
Yep, good catch, I've updated this part to use `JSON.stringify`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]