我正在研究一种解决方案,它使用Web套接字协议在服务器(MVC Core Web应用程序)上发生某些事件时通知客户端(Web浏览器).我使用Microsoft.AspNetCore.WebSockets nuget.
这是我的客户端代码:
$(function () {
var socket = new WebSocket("ws://localhost:61019/data/openSocket");
socket.onopen = function () {
$(".socket-status").css("color", "green");
}
socket.onmessage = function (message) {
$("body").append(document.createTextNode(message.data));
}
socket.onclose = function () {
$(".socket-status").css("color", "red");
}
});
Run Code Online (Sandbox Code Playgroud)
加载此视图时,套接字请求会立即发送到MVC Core应用程序.这是控制器动作:
[Route("data")]
public class DataController : Controller
{
[Route("openSocket")]
[HttpGet]
public ActionResult OpenSocket()
{
if (HttpContext.WebSockets.IsWebSocketRequest)
{
WebSocket socket = HttpContext.WebSockets.AcceptWebSocketAsync().Result;
if (socket != null && socket.State == WebSocketState.Open)
{
while (!HttpContext.RequestAborted.IsCancellationRequested)
{
var response = string.Format("Hello! Time {0}", System.DateTime.Now.ToString());
var bytes …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以将对 ASPX 页面的访问限制为仅 http POST 请求方法?这个受限页面将用于渲染一些复杂的内容。我想将它用于 ajax 调用,该调用会将内容返回到另一个页面上的 div 中。是否可以禁用 GET 请求,以便用户不会意外地通过浏览器中的 URL 访问它?