Код сервера C#:
Код: Выделить всё
app.Use(async (context, next) => {
if (!context.Request.Path.ToString().Contains("/notifications/"))
{
await next();
return;
}
if (context.WebSockets.IsWebSocketRequest) {
WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
} else {
context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
}
});
Код: Выделить всё
import Defaults from "../Defaults";
import Services from "../Services";
export default class NotificationService {
constructor(){
this.socket = null;
}
subscribe(userId, onmessage){
let url = Defaults.webRoot.replace('http', 'ws') + '/notifications/' + userId;
this.socket = new WebSocket(url);
this.socket.onmessage = onmessage;
this.socket.onerror = this.onerror;
this.socket.onclose = this.onclose;
this.socket.onopen = this.onopen;
}
onerror(event){
alert('ws error: ' + event.message);
}
onclose(event){
alert('ws closed: ' + event.code + ' - ' + event.reason);
}
onopen(event){
alert('ws opened');
}
}
Я использую сокет в более позднем запросе, но мне приходится предположить, что сокет не закрывается сразу же после завершения запроса, это было бы глупо.
Состояние является открытым к тому моменту, когда он доходит до моего кода, отправляющего сообщения. . Однако он явно закрыт и не получает сообщений на стороне клиента.
Подробнее здесь: https://stackoverflow.com/questions/508 ... mmediately