HTML5 WebSocket+Asp.Netインスタンス4-ユーザーID、バックグラウンドプッシュ
一、Asp.Netバックグラウンド操作定義
注意:現在の例では、単一のリンクの開きのみが考慮されており、マルチページの開きやブラウザの開きを変更する場合は処理されていません.
二、Html 5フロント単純コード例
詳細:
HTML 5 WebSocketインスタンス(3)-ファイルアップロード処理
HTML 5 WebSocketAPIインスタンス(二)
HTML 5 WebSocketインスタンス(一)
注意:現在の例では、単一のリンクの開きのみが考慮されており、マルチページの開きやブラウザの開きを変更する場合は処理されていません.
///
/// Socket
///
public class SocketOneController : Controller
{
static Dictionary CONNECT_POOL = new Dictionary();//
// 1, socke
public void One(string user)
{
HttpContextBase context = ControllerContext.HttpContext;
context.AcceptWebSocketRequest(async (ctx) =>
{
// socket
WebSocket socket = ctx.WebSocket;
while (true)
{
ArraySegment buffer = new ArraySegment(new byte[1024]);
CancellationToken token;
if (socket.State == WebSocketState.Open)
{
//
if (CONNECT_POOL.Keys.Contains(user) == false)
CONNECT_POOL.Add(user, socket);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, token);
string userMessage = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
userMessage = "You sent: " + userMessage + " at " +
DateTime.Now.ToLongTimeString();
//
buffer = new ArraySegment(Encoding.UTF8.GetBytes(userMessage));
await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
else
{
//
CONNECT_POOL.Remove(user);
break;
}
}
});
}
//
public string Handle(string user)
{
if (CONNECT_POOL.Keys.Contains(user) == false)
return " ";
WebSocket socket = CONNECT_POOL[user];
byte[] bytes = Encoding.UTF8.GetBytes($" at {DateTime.Now.ToString()}");
ArraySegment buffer = new ArraySegment(bytes);
socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
return " ";
}
}
二、Html 5フロント単純コード例
var url = 'ws://localhost:61870/socketone/one?user=' + $('#userOne').val();
var ws = new WebSocket(url);
ws.onopen = function () {
console.info(' ');
}
ws.onmessage = function (e) {
var data = e.data;
console.info(data);
}
ws.onerror = function (e) {
console.error(e);
}
ws.onclose = function () {
console.info(' ');
}
//
$('#btnOne').click(function () {
if (ws.readyState == WebSocket.OPEN) {
ws.send(" ");
} else {
console.error(' ');
}
});
//
$('#btnTwo').click(function () {
ws.close();
});
詳細:
HTML 5 WebSocketインスタンス(3)-ファイルアップロード処理
HTML 5 WebSocketAPIインスタンス(二)
HTML 5 WebSocketインスタンス(一)