-
Type:
Improvement
-
Status:
Closed
-
Priority:
Major
-
Resolution:
No Action
-
Affects Version/s:
3.1.1
-
-
-
-
Resolution:
Hide
TC call 17.10.2013
TC elect to close this issue. Spec does not define any specific return codes for other transports.
Show
TC call 17.10.2013
TC elect to close this issue. Spec does not define any specific return codes for other transports.
The use of Websockets as a transport is described in WD13 Appendix A line 1711
Ken Borgendale suggests that this might also specify the close code and reason.
Java J2EE 1.7 and Mozilla javascript give the ability to set these but other interfaces may not., so we can only make a recommendation.
Normal closure ( 1000) would be the default, but should we recommend using 1002 Protocol_Error if there is an MQTT Protocol error etc?
What reason text should be sent if any?
{"report":{"apdex":1,"isInitial":true,"journeyId":"80fb3c6f-63c0-45d9-bfc0-91a64f8ca648","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":527.9000000953674,"redirectCount":0,"resourceLoadedEnd":443.09999990463257,"resourceLoadedStart":135.30000019073486,"resourceTiming":[{"duration":5.5,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":135.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":135.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":140.80000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":5.800000190734863,"initiatorType":"link","name":"https://issues.oasis-open.org/s/7d2823769c2e7b66e860863fe879b7f8-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/css/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":135.59999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":135.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":141.40000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":6,"initiatorType":"link","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.css","startTime":135.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":135.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":141.90000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":6.5,"initiatorType":"link","name":"https://issues.oasis-open.org/s/645acc233eb869f48a571293b8358a7d-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static-adgs/jira.webresources:global-static-adgs.css","startTime":136.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":136.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":142.59999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":6.899999618530273,"initiatorType":"link","name":"https://issues.oasis-open.org/s/a0dd6509771c1de0667aae5429c04cda-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static/jira.webresources:global-static.css","startTime":136.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":136.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":143.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":54.59999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/e5479157e7a0c08b005e6522f2f04104-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/js/_super/batch.js?locale=en-US","startTime":136.5,"connectEnd":136.5,"connectStart":136.5,"domainLookupEnd":136.5,"domainLookupStart":136.5,"fetchStart":136.5,"redirectEnd":0,"redirectStart":0,"requestStart":136.5,"responseEnd":191.09999990463257,"responseStart":191.09999990463257,"secureConnectionStart":136.5},{"duration":131.19999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/83514d5d4e8543747b02042eafcdc99c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/js/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":137,"connectEnd":137,"connectStart":137,"domainLookupEnd":137,"domainLookupStart":137,"fetchStart":137,"redirectEnd":0,"redirectStart":0,"requestStart":137,"responseEnd":268.19999980926514,"responseStart":268.19999980926514,"secureConnectionStart":137},{"duration":133.30000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/70bb2263e59e7e1f04fbd137c80b895b-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/aae1242f5fc81cc6a5bb8bc963ccda29/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en-US","startTime":137.19999980926514,"connectEnd":137.19999980926514,"connectStart":137.19999980926514,"domainLookupEnd":137.19999980926514,"domainLookupStart":137.19999980926514,"fetchStart":137.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":137.19999980926514,"responseEnd":270.5,"responseStart":270.5,"secureConnectionStart":137.19999980926514},{"duration":133.59999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":137.40000009536743,"connectEnd":137.40000009536743,"connectStart":137.40000009536743,"domainLookupEnd":137.40000009536743,"domainLookupStart":137.40000009536743,"fetchStart":137.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":137.40000009536743,"responseEnd":271,"responseStart":271,"secureConnectionStart":137.40000009536743},{"duration":133.80000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":137.59999990463257,"connectEnd":137.59999990463257,"connectStart":137.59999990463257,"domainLookupEnd":137.59999990463257,"domainLookupStart":137.59999990463257,"fetchStart":137.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":137.59999990463257,"responseEnd":271.40000009536743,"responseStart":271.40000009536743,"secureConnectionStart":137.59999990463257},{"duration":133.89999961853027,"initiatorType":"script","name":"https://issues.oasis-open.org/s/cda37faab827dbdf305de8efe8282062-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.js?locale=en-US","startTime":137.80000019073486,"connectEnd":137.80000019073486,"connectStart":137.80000019073486,"domainLookupEnd":137.80000019073486,"domainLookupStart":137.80000019073486,"fetchStart":137.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":137.80000019073486,"responseEnd":271.69999980926514,"responseStart":271.69999980926514,"secureConnectionStart":137.80000019073486},{"duration":193.09999990463257,"initiatorType":"link","name":"https://issues.oasis-open.org/s/07245784f53abc49bad9d9d4d36c577a-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/cadc4f20cc5c138dee060d42cf85f220/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":137.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":137.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":331,"responseStart":0,"secureConnectionStart":0},{"duration":134.10000038146973,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":138.19999980926514,"connectEnd":138.19999980926514,"connectStart":138.19999980926514,"domainLookupEnd":138.19999980926514,"domainLookupStart":138.19999980926514,"fetchStart":138.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":138.19999980926514,"responseEnd":272.30000019073486,"responseStart":272.30000019073486,"secureConnectionStart":138.19999980926514},{"duration":165.39999961853027,"initiatorType":"link","name":"https://issues.oasis-open.org/s/f77fd89aa211a76b20e9b0e63564383c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.css?jira.create.linked.issue=true&richediton=true","startTime":165.80000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":165.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":331.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":147.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/41525c48ddceeb9b11e54085268fc285-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.js?jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":166,"connectEnd":166,"connectStart":166,"domainLookupEnd":166,"domainLookupStart":166,"fetchStart":166,"redirectEnd":0,"redirectStart":0,"requestStart":166,"responseEnd":313.09999990463257,"responseStart":313.09999990463257,"secureConnectionStart":166},{"duration":160.39999961853027,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":175.30000019073486,"connectEnd":175.30000019073486,"connectStart":175.30000019073486,"domainLookupEnd":175.30000019073486,"domainLookupStart":175.30000019073486,"fetchStart":175.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":175.30000019073486,"responseEnd":335.69999980926514,"responseStart":335.69999980926514,"secureConnectionStart":175.30000019073486},{"duration":141.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":195.90000009536743,"connectEnd":195.90000009536743,"connectStart":195.90000009536743,"domainLookupEnd":195.90000009536743,"domainLookupStart":195.90000009536743,"fetchStart":195.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":195.90000009536743,"responseEnd":337,"responseStart":337,"secureConnectionStart":195.90000009536743},{"duration":19.300000190734863,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":358.59999990463257,"connectEnd":358.59999990463257,"connectStart":358.59999990463257,"domainLookupEnd":358.59999990463257,"domainLookupStart":358.59999990463257,"fetchStart":358.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":358.59999990463257,"responseEnd":377.90000009536743,"responseStart":377.90000009536743,"secureConnectionStart":358.59999990463257},{"duration":24.700000286102295,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/be9ff0efea54a6453d2ac60b92912a09/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":401.19999980926514,"connectEnd":401.19999980926514,"connectStart":401.19999980926514,"domainLookupEnd":401.19999980926514,"domainLookupStart":401.19999980926514,"fetchStart":401.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":401.19999980926514,"responseEnd":425.90000009536743,"responseStart":425.90000009536743,"secureConnectionStart":401.19999980926514},{"duration":27.59999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/8dbb665766273a8e5e49159503d3c6a9-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/ea7e7a11d1f628533837874704f9a54d/_/download/contextbatch/js/jira.rich.editor.api,jira.rich.editor,-_super,-jira.view.issue,-jira.global,-atl.general,-project.issue.navigator/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":401.80000019073486,"connectEnd":401.80000019073486,"connectStart":401.80000019073486,"domainLookupEnd":401.80000019073486,"domainLookupStart":401.80000019073486,"fetchStart":401.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":401.80000019073486,"responseEnd":429.40000009536743,"responseStart":429.40000009536743,"secureConnectionStart":401.80000019073486},{"duration":39.30000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/tinymce.js?batch=false","startTime":402.19999980926514,"connectEnd":402.19999980926514,"connectStart":402.19999980926514,"domainLookupEnd":402.19999980926514,"domainLookupStart":402.19999980926514,"fetchStart":402.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":402.19999980926514,"responseEnd":441.5,"responseStart":441.5,"secureConnectionStart":402.19999980926514},{"duration":40.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/tinymce-amd.js?batch=false","startTime":402.59999990463257,"connectEnd":402.59999990463257,"connectStart":402.59999990463257,"domainLookupEnd":402.59999990463257,"domainLookupStart":402.59999990463257,"fetchStart":402.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":402.59999990463257,"responseEnd":442.69999980926514,"responseStart":442.69999980926514,"secureConnectionStart":402.59999990463257},{"duration":39.19999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/themes/modern/theme.js?batch=false","startTime":403.90000009536743,"connectEnd":403.90000009536743,"connectStart":403.90000009536743,"domainLookupEnd":403.90000009536743,"domainLookupStart":403.90000009536743,"fetchStart":403.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":403.90000009536743,"responseEnd":443.09999990463257,"responseStart":443.09999990463257,"secureConnectionStart":403.90000009536743}],"threshold":1000,"fetchStart":0,"domainLookupStart":20,"domainLookupEnd":20,"connectStart":20,"connectEnd":68,"secureConnectionStart":44,"requestStart":69,"responseStart":126,"responseEnd":195,"domLoading":130,"domInteractive":602,"domContentLoadedEventStart":602,"domContentLoadedEventEnd":658,"domComplete":687,"loadEventStart":687,"loadEventEnd":689,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"e611bb81edde7b","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":96,"dbReadsTimeInMs":13,"dbConnsTimeInMs":17,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
I think there's 3 possible ways we could set the closure code:-
a) Ignore it and just use 1000 even for errors unless they specifically WebSockets-related - we're using WebSockets as a transport like TCP. Does anyone ever take any notice of TCP-like failure codes apart from 'its broken' (eg when getting EPOLL_ERR, go look up the error that was last found on the FD)?
b) Map the connack codes to a websockets private use range (which I think you're proposing above)
c) Something else that reflects the semantics needed for WebSockets, eg just 1000 =OK and 1001 =BAD, as the connack codes are being carried in the higher-layer (MQTT packets)
In practice, I can imagine implementations choosing to use HTTP headers to 'log in' in, so even some of the CONNACK codes might not be encountered. So I'd go for (b), but as a MAY, simply because not all implementations will be able to set the code (including those being bridged). In practice, this means that clients can't rely on a normal closure code actually being normal closure (because a bridge might not know unless it detects a broken TCP socket session).
For reason texts, I'd propose either:-
a) SHOULD set it to the connack description (if using b)
b) MAY instead of SHOULD
c) Freeform
I'd go for c unless we have a need to distinguish error conditions by text rather than code (which I think is unlikely).