C# webSocket使用
1、首先nuget添加动态库的引用
superSocket.Common
superSocket.Facility
SuperSocket.SocketBase
SuperSocket.SocketEngine
SuperSocket.SocketService
SuperSocket.WebSocket
2、编写服务端方法
private static ConcurrentDictionary<string,WebSocketSession> SessionDictionary=new ConcurrentDictionary<string, WebSocketSession>();
static void Main(string[] args)
{
WebSocketServer server = new WebSocketServer(); //创建websocket实例
server.NewSessionConnected += server_NewSessionConnected;
server.NewMessageReceived += server_NewMessageReceived;
server.SessionClosed += server_SessionClosed;
try
{
server.Setup("127.0.0.1", 40001);//设置端口
server.Start();//开启监听
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
static void PushMsg(string title)
{
WebSocketSession session = null;
if (SessionDictionary.Keys.Contains(title))
{
if(SessionDictionary.TryGetValue(title, out session))
{
session.Send("Test Message!");
}
}
}
static void server_SessionClosed(WebSocketSession session, SuperSocket.SocketBase.CloseReason value)
{
var k = "";
foreach (var ss in SessionDictionary)
{
if (ss.Value==session)
{
k = ss.Key;
break;
}
}
if (SessionDictionary.Values.Contains<WebSocketSession>(session))
{
WebSocketSession s = null;
SessionDictionary.TryRemove(k, out s);
}
Console.WriteLine(session.Origin);
}
static void server_NewMessageReceived(WebSocketSession session, string value)
{
Console.WriteLine(value);
SessionDictionary.TryAdd("1", session);
}
static void server_NewSessionConnected(WebSocketSession session)
{
Console.WriteLine(session.Origin);
}
3.客户端代码
@{
ViewBag.Title = "Home Page";
}
<div class="row">
<div class="col-md-4">
<h2>Getting started</h2>
<p>
ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
enables a clean separation of concerns and gives you full control over markup
for enjoyable, agile development.
</p>
<button onclick="sendMsg()">发送</button>
</div>
</div>
<script src="~/Scripts/jquery-3.4.1.js"></script>
<script type="text/javascript">
//检查浏览器是否支持WebSocket
if (!window.WebSocket) {
console.log('您的浏览器不支持WebSocket,请选择其他的浏览器再尝试连接服务器');
}
var el = document.getElementById("textarea");
var wsClient = new WebSocket('ws://localhost:40001');
wsClient.open = function (e) {
el.value += "连接成功!\r\n";
}
wsClient.onclose = function (e) {
el.value += "连接断开!\r\n";
}
wsClient.onmessage = function (e) {
el.value += "接收消息:" + e.data + "\r\n";
}
wsClient.onerror = function (e) {
el.value += "连接失败!原因【" + e.data + "】\r\n";
}
function send() {
var oText = document.getElementById("message");
wsClient.send(oText.value);
}
function sendMsg() {
var values= {
name: "henry",
value:"zunbin"
}
wsClient.send(JSON.stringify(values));
}
</script>
浙公网安备 33010602011771号