本文整理汇总了C#中IChannel.SendMessage方法的典型用法代码示例。如果您正苦于以下问题:C# IChannel.SendMessage方法的具体用法?C# IChannel.SendMessage怎么用?C# IChannel.SendMessage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IChannel
的用法示例。
在下文中一共展示了IChannel.SendMessage方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: JoinService
public Service JoinService(IChannel channel, int id, JArray address, int port)
{
if (id == -1)
{
//_servicesLock.EnterWriteLock();
id = ++_maxIndex;
if (_maxIndex >= _services.Length) //공간이 작다. 공간을 늘린다.
{
var temp = new Service[_services.Length];
System.Array.Copy(_services, temp, _services.Length);
_services = temp;
}
_services[id] = new Service(this, id, address, port);
dynamic packet = new JObject();
packet.type = "change_service_id";
packet.id = id;
channel.SendMessage(packet);
//_servicesLock.ExitWriteLock();
}
//_servicesLock.EnterReadLock();
var service = _services[id];
//_servicesLock.ExitReadLock();
service.AddChannel(channel);
return service;
}
示例2: Connected
public void Connected(IChannel channel)
{
channel.SetTag(false);
channelLock.EnterWriteLock();
_channels.AddLast(channel);
channelLock.ExitWriteLock();
SendMessage("hi! " + channel + "\r\n");
channel.SendMessage("your name : ");
}
示例3: RequestJoinAnt_1
private void RequestJoinAnt_1(IChannel channel, JObject args)
{
var ants = QueenAnt.GetQueenAnt().GetAnts(args.Value<int>("id"));
var ant = ants.JoinAnt(channel, args);
var network = QueenAnt.GetQueenAnt().GetNetwork(ant);
var packet = new JObject();
packet.Add("id", ant.GetId());
packet.Add("network", new JArray(network));
channel.SendMessage("approve_join_ant", packet);
_workEvent.WaitOne();
}
示例4: MessageReceive
public void MessageReceive(IChannel channel, dynamic message)
{
if (channel.GetTag() is bool)
{
channel.SetTag(((string)message).Substring(0, ((string)message).LastIndexOf("\r\n", System.StringComparison.Ordinal)));
SendMessage(channel + " name is " + channel.GetTag() + "\r\n> ");
return;
}
if (message == "\r\n")
{
channel.SendMessage("\r\n> ");
return;
}
SendMessage(channel.GetTag() + " : " + message + "> ");
}
示例5: Handle
public void Handle(IChannel channel, Request request)
{
var contact = new HttpContact(channel, request, new Response {Protocol = request.GetProtocol()});
if(contact.GetRequest().GetProtocol() == "HTTP/1.1")
contact.GetResponse().Protocol = "1.1";
try
{
_action(contact, _rx.Split(request.GetPath()));
}
catch (Exception e)
{
contact.GetResponse().Status = 500;
contact.GetResponse().SetContent(e.ToString());
}
if (contact.IsAutoSendResponse)
channel.SendMessage(contact.GetResponse());
}
示例6: Handle
public void Handle(IChannel channel, Request request)
{
var response = new Response();
response.Protocol = request.GetProtocol();
FileStream reader = null;
try
{
reader = new FileStream(string.Format(_path, _rx.Split(request.GetPath())), FileMode.Open, FileAccess.Read);
int index = request.GetPath().LastIndexOf(".");
if(index != -1 && index+1 < request.GetPath().Length)
{
try
{
string extension = request.GetPath().Substring(index+1);
response.ContentType = ContentTypeDictionary[extension];
}
catch (Exception)
{
}
}
if(response.ContentType.StartsWith("text/"))
response.SetContent(new StreamReader(reader).ReadToEnd());
else
response.SetContent(reader);
}
catch (Exception)
{
response.Status = 404;
}
if (reader != null)
reader.Close();
channel.SendMessage(response);
}
示例7: AddService
private void AddService(IChannel channel, Services services, int id, JArray address, int port)
{
var service = services.JoinService(channel, id, address, port);
if (id == -1)
{
dynamic packet = new JObject();
packet.type = "max_entity_id";
packet.value = 10000;
channel.SendMessage(packet);
var networks = _networkManager.GetNetworks(service);
int notifyServiceCount = 0;
foreach (var network in networks)
{
var remoteServiceName = network.Service1 == services.GetServicesName() ? network.Service2 : network.Service1;
var remoteService = GetServices(remoteServiceName);
if (remoteService == null)
continue;
notifyServiceCount += remoteService.NotifyJoinService(service, network);
}
//Interlocked.Increment
//여기서 광역 락 시전!
//추가 됬다고 정보를 알린 모든 서비스에서 승인이 떨어지면 다음꺼 처리.
if (notifyServiceCount > 0)
{
_addremoveService = service;
_notifyServiceCount = notifyServiceCount;
_nextAddRemoveProcessing = new AutoResetEvent(false);
_nextAddRemoveProcessing.WaitOne();
}
}
}
示例8: MessageReceive
public void MessageReceive(IChannel channel, dynamic message)
{
channel.SendMessage(message);
}
示例9: QueenConnected
public void QueenConnected(IChannel channel)
{
_queenChannel = channel;
channel.SendMessage("get_ant_name_list", null);
}
示例10: UpgradeWebSocket
private void UpgradeWebSocket(IChannel channel, Request request)
{
var response = new Response { Status = 101, Protocol="1.1"};
var protocol = channel as IKeepProtocolChannel;
if (protocol == null)
return;
var finder = GetWebSocketUriFinder(request);
if (finder == null)
return;
var handler = channel as IKeepHandlerChannel;
if (handler == null)
return;
handler.SetHandler((IChannelHandler)finder.GetHandler(request.GetPath()));
response.GetHeader().AppendLine("Upgrade: websocket")
.AppendLine("Connection: Upgrade")
.AppendLine("Sec-WebSocket-Accept: " + GetWebSocketAcceptCode(request.GetHeader("Sec-WebSocket-Key")));
channel.SendMessage(response);
protocol.SetProtocol(WebSocketProtocol.Protocol);
handler.GetHandler().Connected(channel);
}
示例11: Processing
private void Processing(IChannel channel, Request request)
{
//웹소켓 요청인가?
if (request.GetHeader("connection") == "Upgrade")
{
if (request.GetHeader("upgrade") == "websocket")
UpgradeWebSocket(channel, request);
return;
}
//JSON
if (request.GetHeader("Accept") != null && request.GetHeader("Accept").IndexOf("application/json") >= 0)
{
UriFinder finder = GetJSONUriFinder(request);
if (finder != null)
{
var response = new Response();
response.SetContent(finder.GetHandler(request.GetPath()).ToString());
response.ContentType = "application/json";
response.Protocol = request.GetProtocol();
channel.SendMessage(response);
return;
}
}
//여기서 여러가지 예외 처리를!
IUriHandler handler = GetUriHandler(channel, request);
if (handler != null)
{
handler.Handle(channel, request);
}
else
{
var response = new Response();
response.Status = 401;
response.Protocol = request.GetProtocol();
channel.SendMessage(response);
}
}
示例12: UpgradeWebSocket
private void UpgradeWebSocket(IChannel channel, Request request)
{
var response = new Response { Status = 101, Protocol="1.1"};
var finder = GetWebSocketUriFinder(request);
if (finder == null)
return;
channel.SetConfig("handler", finder.GetHandler(request.GetPath()));
//((IChannelHandler)channel.GetConfig("handler")).GetHandler();
response.GetHeader().AppendLine("Upgrade: websocket")
.AppendLine("Connection: Upgrade")
.AppendLine("Sec-WebSocket-Accept: " + GetWebSocketAcceptCode(request.GetHeader("Sec-WebSocket-Key")));
channel.SendMessage(response);
channel.SetConfig("encoder", Protocol.PacketEncoder.WebSocket.WebSocketEncoder.Encoder);
channel.SetConfig("decoder", Protocol.PacketEncoder.WebSocket.WebSocketDecoder.Decoder);
//protocol.SetProtocol(WebSocketProtocol.Protocol);
((IChannelHandler)channel.GetConfig("handler")).Connected(null/**/);
//handler.GetHandler().Connected(channel);
}
示例13: MessageReceive
public void MessageReceive(IChannel channel, dynamic message)
{
Request request = message;
channel.SendMessage(new Response());
}