Skip to content

Commit 9a163b7

Browse files
lilien1010juzhiyuan
authored andcommitted
Upstream support websocket enable and hashOn select (#118)
* feature: upstream support enable websocket and hashOn * fix tips * add space * fix format as comment * fix
1 parent 4eb74a0 commit 9a163b7

File tree

4 files changed

+91
-3
lines changed

4 files changed

+91
-3
lines changed

src/lang/en.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,13 @@ export default {
7575
inputMultipleValues: 'Input value then press return button',
7676
propertyHostsTip: 'Any values are supported'
7777
}
78+
},
79+
upstream: {
80+
websocket: {
81+
EnabledTip: 'WebSocket enabled',
82+
DisabledTip: 'WebSocket disabled'
83+
},
84+
keyTip: 'You can edit and input any value here,and press Enter to confirm.',
85+
hashOnTip: 'Select a hash on.'
7886
}
7987
}

src/lang/zh.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,13 @@ export default {
8383
inputMultipleValues: '输入值后并回车',
8484
propertyHostsTip: '任何值均可'
8585
}
86+
},
87+
upstream: {
88+
websocket: {
89+
EnabledTip: 'WebSocket 打开',
90+
DisabledTip: 'WebSocket 关闭'
91+
},
92+
keyTip: '你可以编辑并输入任何值,输入值后回车确认。',
93+
hashOnTip: '选择 chash 参数来源。'
8694
}
8795
}

src/views/schema/routes/edit.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ export default class extends Vue {
383383
}
384384
})
385385
386+
delete data['tempPlugin']
386387
if (this.isEditMode) {
387388
await updateRouter(this.$route.params.id, data)
388389
} else {

src/views/schema/upstream/edit.vue

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,28 @@
5353
</el-select>
5454
</el-form-item>
5555

56+
<el-form-item
57+
label="Hash On"
58+
>
59+
<el-select
60+
v-model="form.hash_on"
61+
filterable
62+
default-first-option
63+
value-key="form.hash_on"
64+
:disabled="form.type !== 'chash'"
65+
>
66+
<el-option
67+
v-for="item in defaultHashOnKeys"
68+
:key="item.value"
69+
:label="item.label"
70+
:value="item.value"
71+
/>
72+
</el-select>
73+
<p class="tip">
74+
{{ $t('upstream.hashOnTip') }}
75+
</p>
76+
</el-form-item>
77+
5678
<el-form-item
5779
label="Key"
5880
>
@@ -73,6 +95,23 @@
7395
:value="item.value"
7496
/>
7597
</el-select>
98+
<p class="tip">
99+
{{ $t('upstream.keyTip') }}
100+
</p>
101+
</el-form-item>
102+
103+
<el-form-item
104+
label="WebSocket"
105+
>
106+
<el-switch
107+
v-model="form.enable_websocket"
108+
109+
active-color="#13ce66"
110+
inactive-color="#ff4949"
111+
/>
112+
<p class="tip">
113+
{{ form.enable_websocket ? $t('upstream.websocket.EnabledTip') : $t('upstream.websocket.DisabledTip') }}
114+
</p>
76115
</el-form-item>
77116

78117
<el-form-item
@@ -159,7 +198,9 @@ export default class extends Vue {
159198
type: null,
160199
key: null,
161200
nodes: [],
162-
desc: ''
201+
desc: '',
202+
enable_websocket: null,
203+
hash_on: null
163204
}
164205
165206
private rules = {
@@ -171,6 +212,25 @@ export default class extends Vue {
171212
172213
private types = ['roundrobin', 'chash']
173214
215+
private defaultHashOnKeys = [
216+
{
217+
value: 'vars',
218+
label: 'vars'
219+
},
220+
{
221+
value: 'header',
222+
label: 'header'
223+
},
224+
{
225+
value: 'cookie',
226+
label: 'cookie'
227+
},
228+
{
229+
value: 'consumer',
230+
label: 'consumer'
231+
}
232+
]
233+
174234
private defaultHashKeys = [
175235
{
176236
value: 'remote_addr',
@@ -230,7 +290,9 @@ export default class extends Vue {
230290
type = null,
231291
nodes = [],
232292
key = null,
233-
desc = ''
293+
desc = '',
294+
enable_websocket = false,
295+
hash_on = null
234296
}
235297
}
236298
} = (await getUpstream(id)) as any
@@ -248,7 +310,9 @@ export default class extends Vue {
248310
type,
249311
key,
250312
nodes,
251-
desc
313+
desc,
314+
enable_websocket,
315+
hash_on
252316
}
253317
}
254318
@@ -348,6 +412,13 @@ export default class extends Vue {
348412
.el-input {
349413
width: 193px;
350414
}
415+
.tip {
416+
line-height: 24px;
417+
font-size: 12px;
418+
margin: 0;
419+
color: #8e8c8c;
420+
display: inline;
421+
}
351422
}
352423
}
353424
.node-item {

0 commit comments

Comments
 (0)