Skip to content

Commit 2f6feb8

Browse files
Gourav DwivediGourav Dwivedi
authored andcommitted
big fixes: 1. clear all fields on disconnect. \n 2. Supported protocol is coming in basic view on page load
1 parent b6390f0 commit 2f6feb8

File tree

5 files changed

+157
-42
lines changed

5 files changed

+157
-42
lines changed

Samples/AspDotCore/WebApp/WebApp/Controllers/HomeController.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,32 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using Microsoft.AspNetCore.Mvc;
2+
using Microsoft.AspNetCore.SignalR;
33
using System.Diagnostics;
4-
using System.Linq;
54
using System.Threading.Tasks;
6-
using Microsoft.AspNetCore.Mvc;
5+
using WebApp.Hubs;
76
using WebApp.Models;
87

98
namespace WebApp.Controllers
109
{
1110
public class HomeController : Controller
1211
{
12+
private IHubContext<OneHub> _hubContext;
13+
14+
public HomeController(IHubContext<OneHub> hubContext)
15+
{
16+
_hubContext = hubContext;
17+
}
18+
1319
public IActionResult Index()
1420
{
1521
return View();
1622
}
1723

24+
public async Task<IActionResult> TestSRClient()
25+
{
26+
await _hubContext.Clients.All.SendAsync("ReceiveData", "Hey, OneHub is here");
27+
return new JsonResult($"Message sent from {nameof(OneHub)} to all the clients");
28+
}
29+
1830
public IActionResult Privacy()
1931
{
2032
return View();

Samples/AspDotCore/WebApp/WebApp/Startup.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using Microsoft.AspNetCore.Mvc;
1010
using Microsoft.Extensions.Configuration;
1111
using Microsoft.Extensions.DependencyInjection;
12+
using WebApp.Hubs;
1213

1314
namespace WebApp
1415
{
@@ -24,20 +25,32 @@ public Startup(IConfiguration configuration)
2425
// This method gets called by the runtime. Use this method to add services to the container.
2526
public void ConfigureServices(IServiceCollection services)
2627
{
28+
services.AddCors(options => options.AddPolicy("Cors", builder =>
29+
{
30+
builder
31+
//.AllowAnyOrigin()
32+
.AllowAnyMethod()
33+
.AllowAnyHeader()
34+
.AllowCredentials()
35+
.WithOrigins("http://localhost:8080");
36+
}));
37+
2738
services.Configure<CookiePolicyOptions>(options =>
2839
{
2940
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
3041
options.CheckConsentNeeded = context => true;
3142
options.MinimumSameSitePolicy = SameSiteMode.None;
3243
});
3344

34-
45+
services.AddSignalR();
3546
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
3647
}
3748

3849
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
3950
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
4051
{
52+
app.UseCors("Cors");
53+
4154
if (env.IsDevelopment())
4255
{
4356
app.UseDeveloperExceptionPage();
@@ -49,6 +62,10 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env)
4962
app.UseHsts();
5063
}
5164

65+
app.UseSignalR(option => {
66+
option.MapHub<OneHub>(new PathString("/Test/OneHub"));
67+
});
68+
5269
app.UseHttpsRedirection();
5370
app.UseStaticFiles();
5471
app.UseCookiePolicy();

Samples/AspDotCore/WebApp/WebApp/WebApp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<ItemGroup>
1010
<PackageReference Include="Microsoft.AspNetCore.App" />
1111
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
12+
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
1213
</ItemGroup>
1314

1415
</Project>

src/js/components/srform.component.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class SrFormComponent extends HTMLElement {
3636
<div class="form-group row">
3737
<label for="inputUrl" class="col-sm-2 col-form-label">Service Endpoint</label>
3838
<div class="col-sm-10">
39-
<input type="text" class="form-control inputUrl" id="inputUrl" placeholder="Url" value="https://localhost:5001/connect/app">
39+
<input type="text" class="form-control inputUrl" id="inputUrl" placeholder="Url" value="https://localhost:5001/Test/OneHub">
4040
</div>
4141
</div>
4242
<div class="form-group row">
@@ -79,7 +79,7 @@ class SrFormComponent extends HTMLElement {
7979
<label for="inputRequestData" class="col-sm-2 col-form-label">Request Payload</label>
8080
<div class="col-sm-10 offset-sm-2">
8181
<input type="button" value="Add Argument" id="inputRequestData" class="btn-primary btn-xs btn-add-argument" />
82-
<div id="form-group method-arguments" class="method-arguments"></div>
82+
<div id="method-arguments" class="form-group method-arguments"></div>
8383
</div>
8484
</div>
8585
<div class="form-group row onconnect">

src/js/components/srform.js

Lines changed: 120 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@ const ContentType = {
77
JSON : "JSON"
88
}
99

10-
1110
var connection = null;
11+
var storeFunc = null;
1212
var isConnected = false;
13+
var isAdvanceView = false;
14+
1315
export function Init() {
1416
//Connect Button Events
1517
var connectBtnClass = document.getElementsByClassName('connectbtn');
1618
for (var i = 0; i < connectBtnClass.length; i++) {
1719
connectBtnClass[i].addEventListener('click',
1820
function () {
19-
console.log('btn connect');
2021
OnConnect();
2122
},
2223
false);
@@ -27,7 +28,6 @@ export function Init() {
2728
for (var i = 0; i < disconnectBtnClass.length; i++) {
2829
disconnectBtnClass[i].addEventListener('click',
2930
function () {
30-
console.log('btn connect');
3131
OnDisConnect();
3232
},
3333
false);
@@ -44,7 +44,6 @@ export function Init() {
4444
}
4545

4646
NotConnected();
47-
4847
Test();
4948

5049
}
@@ -63,46 +62,60 @@ export function Test() {
6362
}
6463

6564
export function OnTabChange(tabName) {
65+
debugger;
6666
if (tabName == 'basic') {
67-
document.getElementById('protocol-support').style = 'display:none';
68-
67+
//document.getElementById('protocol-support').style = 'display:none';
68+
isAdvanceView = false;
69+
AdvanceViewElements(isAdvanceView);
6970
}
7071
else {
71-
if (isConnected) {
72-
document.getElementById('protocol-support').style = 'display:block';
73-
}
72+
isAdvanceView = true;
73+
AdvanceViewElements(isAdvanceView);
74+
// if (isConnected) {
75+
// isAdvanceView = true;
76+
// //document.getElementById('protocol-support').style = 'display:block';
77+
// AdvanceViewElements(isAdvanceView);
78+
// }
7479
}
7580
}
7681

77-
export function AddArguments() {
82+
export function AdvanceViewElements(enable) {
83+
if(enable === true) {
84+
document.getElementById('protocol-support').style = 'display:block';
85+
}
86+
else {
87+
document.getElementById('protocol-support').style = 'display:none';
88+
}
89+
}
7890

91+
export function AddArguments() {
7992
//Add Arguments Button Events
8093
var addArgBtnClass = document.getElementsByClassName('btn-add-argument');
8194
for (var i = 0; i < addArgBtnClass.length; i++) {
82-
addArgBtnClass[i].addEventListener('click',
83-
function () {
95+
addArgBtnClass[i].addEventListener('click', AddArgumentsCallBack, false);
96+
}
97+
}
8498

85-
var parentDiv = document.getElementsByClassName('method-arguments');
99+
export function AddArgumentsCallBack() {
86100

87-
for (var i = 0; i < parentDiv.length; i++) {
101+
var parentDiv = document.getElementsByClassName('method-arguments');
88102

89-
var divElement = document.createElement('div');
90-
//divElement.setAttribute('class', 'form-group form-inline args-container');
91-
divElement.setAttribute('class', 'container args-container');
92-
//divElement.setAttribute('style', 'border:1px solid #cecece');
103+
for (var i = 0; i < parentDiv.length; i++) {
93104

94-
var hr = document.createElement('hr');
95-
hr.setAttribute('class', 'style13');
105+
var divElement = document.createElement('div');
106+
//divElement.setAttribute('class', 'form-group form-inline args-container');
107+
divElement.setAttribute('class', 'container args-container');
108+
//divElement.setAttribute('style', 'border:1px solid #cecece');
96109

97-
divElement.appendChild(GetTextBoxElement());
98-
divElement.appendChild(GetSelectElement());
99-
divElement.appendChild(GetImageElement());
100-
divElement.append(document.createElement('br'))
101-
divElement.appendChild(hr);
102-
parentDiv[i].appendChild(divElement);
103-
}
104-
},
105-
false);
110+
var hr = document.createElement('hr');
111+
hr.setAttribute('class', 'style13');
112+
113+
divElement.appendChild(GetTextBoxElement());
114+
divElement.appendChild(GetSelectElement());
115+
divElement.appendChild(GetImageElement());
116+
divElement.append(document.createElement('br'))
117+
divElement.appendChild(hr);
118+
parentDiv[i].appendChild(divElement);
106119
}
107120
}
108121

@@ -159,7 +172,6 @@ export function GetImageElement() {
159172
// inputTxtElement.src = require('../../images/delete.png');
160173
imgElement.addEventListener('click', function() {
161174
console.log('Delete Button');
162-
debugger;
163175
this.parentElement.parentElement.remove();
164176
});
165177
div.appendChild(imgElement);
@@ -176,7 +188,6 @@ export function ReadArguments() {
176188
}
177189

178190
argsContainers.forEach((el) => {
179-
debugger;
180191
var textBox = el.querySelector('.req-arg-txt').value;
181192
var selectList = el.querySelector('.req-content-type').value;
182193

@@ -220,9 +231,18 @@ export function NotConnected() {
220231
}
221232

222233
export function buildConnection(url) {
234+
// var option = {
235+
// accessTokenFactory: () => 'YOUR ACCESS TOKEN TOKEN HERE'
236+
// };
237+
var option = {
238+
239+
};
240+
241+
242+
223243
connection = new signalR.HubConnectionBuilder()
224-
.withUrl(url)
225-
.build();
244+
.withUrl(url, option)
245+
.build();
226246
}
227247

228248
export function start() {
@@ -246,25 +266,77 @@ export function connectToServer(url) {
246266
export function OnConnect() {
247267
var url = document.getElementById("inputUrl").value;
248268
connectToServer(url);
249-
250269
console.log("OnConnect");
251270
isConnected = true;
252271
var onConnectClass = document.getElementsByClassName('onconnect');
253272
for (var i = 0; i < onConnectClass.length; i++) {
254273
onConnectClass[i].style.display = "block";
255274
}
256275

276+
AdvanceViewElements(isAdvanceView);
257277
//Hide Connect Button
258278
DisableElementByClassName('connectbtn')
259279

260280
//Receive Data
281+
//Reading the raw response
282+
storeFunc = connection.processIncomingData;
283+
connection.processIncomingData = function (data) {
284+
console.log('111111111111xxxxxxxxxxxx'+ data);
285+
storeFunc.call(connection, data);
286+
}
261287
connection.on("ReceiveData", function (data) {
262288
document.querySelector("#inputResponseData").value += JSON.stringify(data) + '\n';
263289
});
264290

265291
AddArguments();
266292
}
267293

294+
export function SetConnectionProtocol()
295+
{
296+
// var anyCheckbox = document.getElementById("txt-chk-any");
297+
298+
// if(anyCheckbox.checked === true)
299+
// {
300+
// return;
301+
// }
302+
303+
//Start work from here.
304+
var counter = 0;
305+
var elements = document.querySelectorAll(".lst-con-protocol");
306+
307+
for(var i = 0; i < elements.length; i++)
308+
{
309+
if(elements[i].value === "ws" && elements[i].checked !== true)
310+
{
311+
console.log("WebSocket disabled");
312+
WebSocket = undefined;
313+
counter++;
314+
}
315+
else if(elements[i].value === "sse" && elements[i].checked !== true)
316+
{
317+
console.log("Server Sent Event disabled");
318+
EventSource = undefined;
319+
counter++;
320+
}
321+
else if(elements[i].value === "lp" && elements[i].checked !== true)
322+
{
323+
//console.log("Server Sent Event disabled");
324+
//EventSource = undefined;
325+
counter++;
326+
}
327+
}
328+
329+
330+
// if(counter === 0)
331+
// {
332+
// anyCheckbox.checked = true;
333+
// }
334+
// else
335+
// {
336+
// anyCheckbox.checked = false;
337+
// }
338+
}
339+
268340
export function DisableElementByClassName(className) {
269341
var el = document.getElementsByClassName(className);
270342

@@ -294,15 +366,28 @@ export function OnDisConnect() {
294366
onDisConnectClass[i].style.display = "block";
295367
}
296368

369+
Reset();
297370
EnableElementByClassName('connectbtn');
298371
NotConnected();
299372
}
300373

374+
export function Reset() {
375+
//Clear Server Method Text
376+
document.getElementById('inputServerMethod').value = "";
377+
378+
379+
var addArgBtnClass = document.getElementsByClassName('btn-add-argument');
380+
for (var i = 0; i < addArgBtnClass.length; i++) {
381+
addArgBtnClass[i].removeEventListener('click', AddArgumentsCallBack, false);
382+
}
383+
document.getElementById('method-arguments').innerHTML = "";
384+
inputResponseData.value = "";
385+
}
386+
301387
export function Disconnect() {
302388
connection.stop()
303389
.then(function () {
304390
console.log('Disconnected');
305-
//document.querySelector("#txt-output-area").value += "Disconnected..." + '\n'
306391
})
307392
.catch(function (err) {
308393
return console.error(err.toString());

0 commit comments

Comments
 (0)