<package id="Microsoft.AspNet.SignalR" version="2.2.2" targetFramework="net45" /> <package id="Microsoft.AspNet.SignalR.Core" version="2.2.2" targetFramework="net45" /> <package id="Microsoft.AspNet.SignalR.JS" version="2.2.2" targetFramework="net45" /> <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.2" targetFramework="net45" />
[assembly: OwinStartup(typeof(Stage.Api.Extend.Startup))]
namespace Stage.Api.Extend
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR("/chat", new Microsoft.AspNet.SignalR.HubConfiguration
{
EnableDetailedErrors = true,
EnableJavaScriptProxies = true
});
}
}
}
public class ChatHub : Hub
{
//
public int Num = 10001;
public static List<MoHubUser> _Users = new List<MoHubUser>();
/// <summary>
/// 添加聊天人
/// </summary>
/// <param name="user"></param>
public void AddUser(MoHubUser user)
{
user.Id = Context.ConnectionId;
if (!_Users.Any(b => b.Id == user.Id))
{
_Users.Add(user);
}
//Clients.All.newUser(user);
Clients.All.userList(_Users);
}
/// <summary>
/// 发送信息
/// </summary>
/// <param name="user"></param>
/// <param name="message"></param>
public void SendAll(MoHubUser user, string message)
{
Clients.All.addNewMessageToPage(user, message);
}
/// <summary>
/// 某个聊天人退出是,通知所有在线人重新加载聊天人数
/// </summary>
/// <param name="stopCalled"></param>
/// <returns></returns>
public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
{
var user = _Users.SingleOrDefault(x => x.Id == Context.ConnectionId);
if (user != null)
{
_Users.Remove(user);
Clients.All.userList(_Users);
}
return base.OnDisconnected(stopCalled);
}
}
public class MoHubUser
{
public string Id { get; set; }
public string NickName { get; set; }
public string TransportMethod { get; set; }
}
@{
ViewBag.Title = "神牛聊天室 - SignalR";
}
<style type="text/css">
.div_left {
width: 70%;
float: left;
}
.div_right {
width: 28%;
float: left;
}
.ul {
list-style: none;
border: 1px solid #ccc;
height: 500px;
overflow-y: scroll;
color: black;
}
.ul li {
padding-top: 5px;
padding-right: 25px;
}
.ul_user {
list-style: none;
}
.ul_user li {
padding-top: 5px;
}
.send {
position: relative;
background: #eae7e7;
border-radius: 5px; /* 圆角 */
padding-top: 4px;
padding-left: 5px;
margin-top: 13px;
}
.send .arrow {
position: absolute;
top: -16px;
font-size: 0;
border: solid 8px;
border-color: #fff #fff #eae7e7 #fff;
}
</style>
<h3>@ViewBag.Title 在线人数:<span id="sapnUserTotal">0</span>人</h3>
<div class="container text-left">
<div class="div_left">
<ul class="ul" id="discussion"></ul>
<textarea rows="5" class="form-control" id="message" maxlength="500" placeholder="开始聊天. . ." style="max-width: 100%"></textarea><br />
<input type="button" id="sendmessage" value="发 送" class="btn btn-default" />
<input type="hidden" id="displayname" />
</div>
<div class="div_right">
<ul id="users" class="ul_user"></ul>
</div>
</div>
<script src="~/Scripts/jquery.signalR-2.2.2.min.js"></script>
@*<script src="~/chat/hubs"></script>*@
var chat = $.connection.chatHub;
chat.client.newUser = function (user) {
$("#users").append(' <li><strong>' + user.NickName + '[' + user.TransportMethod + ']</strong></li>');
};
chat.client.userList = function (users) {
console.log(users);
$("#sapnUserTotal").html(users.length);
$.each(users, function (i, item) {
$("#users").append(' <li>[' + item.TransportMethod + '] <strong>' + item.NickName + '</strong>(' + item.Id + ')</li>');
});
};
chat.client.addNewMessageToPage = function (user, message) {
console.log(user);
$("#discussion").append(' <li ><span><strong>' + user.NickName + '[' + user.TransportMethod + ']</strong>:</span><div class="send">' + message + '<div class="arrow"></div></div></li>');
};
//connection.hub.start({ transport: ['webSockets', 'longPolling'] }).done(function () {
// my.TransportMethod = connection.hub.transport.name;
// chat.server.addUser(my);
// $('#sendmessage').click(function () {
// //console.log(chat);
// var content = $.trim($('#message').val());
// if (content.length <= 0) { $('#message').val('').focus(); return; }
// chat.server.sendAll(my, content);
// $('#message').val('').focus();
// });
//}).fail(function () {
// alert("链接聊天室失败,请重新刷新页面。");
//});
var my = { NickName: "神牛001", TransportMethod: "" };
var connection = $.hubConnection("/chat/hubs");
var chat = connection.createHubProxy('chatHub');
chat.on("userList", function (users) {
console.log(users);
$("#sapnUserTotal").html(users.length);
$("#users").html("");
$.each(users, function (i, item) {
$("#users").append(' <li>[' + item.TransportMethod + '] <strong>' + item.NickName + '</strong>(' + item.Id + ')</li>');
});
});
chat.on("addNewMessageToPage", function (user, message) {
console.log(user);
$("#discussion").append(' <li ><span><strong>' + user.NickName + '[' + user.TransportMethod + ']</strong>:</span><div class="send">' + message + '<div class="arrow"></div></div></li>');
var div = document.getElementById('discussion');
//div.scrollTop = div.scrollHeight;
div.scrollTop = 999999;
});
var nickName = prompt("请输入一个昵称:", my.NickName);
my.NickName = nickName.length > 0 ? nickName : my.NickName;
$('#displayname').val(nickName);
$('#message').focus();
connection.start({ transport: ['webSockets', 'longPolling'] }).done(function () {
my.TransportMethod = connection.transport.name;
//console.log(my.TransportMethod);
chat.invoke("addUser", my);
$('#sendmessage').click(function () {
var content = $.trim($('#message').val());
if (content.length <= 0) { $('#message').val('').focus(); return; }
chat.invoke("sendAll", my, content);
$('#message').val('').focus();
});
});
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有