����������ر���
�� skynet �У���ʱ��Ϊһ������ʵ��һ��ǰ�õĴ��������Ǻ��б�Ҫ�ġ�
���磬��ϣ��������������������֧�ֳ�ʱ�ģ��Ͳ����ڹ���ʵ�ֵķ�����ʵ�֣�������������ν�ĸ����ԡ�������ڹ���ʵ�ֵķ���ǰ��һ������������ʱ����ʱ��֪ͨ�����������ʵ�֣����� blog ������һ��ʾ����
ͬ����������Ҫ��һЩ���ؾ���Ĵ�����ʱ��Ҳ������һ�����������������̯���������������ƹ��ܵķ�����ȥ��ʵ�ֱȽϼ����ľͲ�չ���ˡ�
������̸һ����ô���ô���������õ�ΪһЩ�ȵ�����ṩ���ر�����
���ر���������ǰ�Ҿ�д�������������Ӫ��Ʒ�������������ȱ������� skynet ʹ���ߣ��������������������⡣�����Ҳ�Dz�������������Ҫ��������⡣
�������δ���İ汾�У���һЩ���ײ�ı�����ʩ������Ŀǰ�� skynet 1.0 �棬�������ɿ������ϲ���һЩ������
���������Ѿ�֪����ij���������׳�Ϊ�ȵ㣬��ôǰ��һ����������Ϳ������ܶ����顣
��ν�����������������Ĺ��ܷ���������ʱ��������Ϣ������һ�����������У��������������ת���������������Ĺ��ܷ���ͬ������Ӧ��ϢҲ�ᱻ��������ת����ȥ��
���������ڹ�����Щ��Ϣʱ��������һЩ���������磺
���ij��������������Ƶ�����������ʱ������Щ��������ת��������������������������˹�ƽ�ԡ������������Դ�ķ����Ѿ��˳����ڴ���������������������δ���������������ֱ�ӽ���Щ��Ϣ���������Ṧ�ܷ���ĸ�����
���ǻ����ԴӴ��������Ӧ�Ĺ��ܷ���ĸ��������������ܷ����æ��Ҳ������ʱ�����µ������������������Ǵӵ��Կ���̨�Թ��ܷ�������Կ���ָ��ʱ�����Ը���Ļ�Ӧ�����ӵ��Կ���ֱ̨�ӶԹ��ܷ�������������������������Ͻ������ʱ������������غ���ָ����Ӧ�ٻ��Ἣ�����ϴ������ϵ�Ч�ʡ�
skynet �Ա�д���������Ѿ��ṩ�˲�����֧�֣�����Բο� clusterproxy ���� ����д�Լ��ķ��������
ͨ��һ�����������������ģ�
local skynet = require "skynet" require "skynet.manager" -- inject skynet.forward_type skynet.register_protocol { name = "system", id = skynet.PTYPE_SYSTEM, unpack = function (...) return ... end, } local forward_map = { [skynet.PTYPE_LUA] = skynet.PTYPE_SYSTEM, [skynet.PTYPE_RESPONSE] = skynet.PTYPE_RESPONSE, -- don't free response message } local realsvr = tonumber((...)) skynet.forward_type( forward_map ,function() skynet.dispatch("system", function (session, source, msg, sz) skynet.ret(skynet.rawcall(realsvr, "lua", msg, sz)) end) end)
����Ĵ��벢������������Ҫ�����������ҵ������ȫ����
ʹ�� skynet.forward_type
��Ҫ�ṩһ��ӳ�������ʾ����Ҫ������Щ���͵�Э�顣����֮�⣬�� skynet.start ���÷�һ�¡�
��ӳ����е�Э����Ϣ����ܲ����ͷ���Ϣ��ռ���ڴ棬����Ϊ�˱���������Ҫ����Ϣ������ͬʱ����Ҳ����С�ĵĴ������ǣ������ڴ�й©��
������������У����е� lua Э��������Ϣ���ض���Ϊ system ���������������¶��� unpack �����������κν����������Ȼ�������� dispatch �����У�ʹ�� skynet.rawcall ֱ�ӷ�����Ϣָ�룬�Ӷ��ƹ�������̺ͶԻ�Ӧ���Ľ�����̡�
���ﻹӳ���� response ����Ϣ��������Ϊ���ÿ�ܲ�Ҫ�ͷ������ں��� dispatch �ڣ�skynet.rawcall ���صĻ�Ӧ���� C ָ��ͳ��ȣ�ֱ�ӽ��� skynet.ret �Ϳ��Ի�Ӧ��ԭʼ�����ˡ�
�����ʾ��ֻ�����������Ӧģʽ����Ϣ������㻹����ȷת������� skynet.send ��Ϊ��������������ж�һ�� session �Ƿ�Ϊ 0 ����������Ϣ�� session Լ��Ϊ������ 0 ��������
����жϹ��ܷ����Ƿ���أ�
��������ϼ�أ�����Բ鿴 log ��Ŀǰ����Ϣ���й�������������ʱ������� "May overload, message queue length = xxx" ��
�����Լ�Ҳ����ͨ�� skynet.mqlen ��һ�µ�ǰ����������Ϣ���г��ȡ�
�������ȡ��ѯ�Է��Ƿ���ܼ�ʱ������Ϣ���Ƚϼķ�����ʵ��һ��Э�飬���̷��ء�����Ϊ����ʹ�� skynet.now ����һ���������Ļ�Ӧ�ٶȡ������µ� skynet �汾�У���������Ĭ�ϵ� debug Э�� ping ����������顣
local ti = skynet.now() skynet.call(address, "debug", "PING") ti = skynet.now() - ti
ʹ�� debug console �Ļ�������ʹ�� ping address ���
btw. ������Ĵ���������ʹ�� debug ping �ǰ�ȫ�ġ���Ȼ response ����Ϣ����Ϊ�� skynet.forward_type
��Ϊ�����ͷţ��� debug ping Э��Ƚ����⣬���Ļ�Ӧ��Ϣ������Ϊ�ա�
�������Ҫ�ڴ��������з����������ǵ�ʹ�� rawcall �����ٵ���Ӧ��ָ�롣
skynet.trash(skynet.rawcall(address, "lua", skynet.pack(...)))
��Ҫ�ֹ����� ping �� response ��Ϣ��
��μ�ʱ��֪һ�������Ѿ��˳���
skynet �����Ƽ���������ʹ�� skynet.monitor ����һ���Լ��ļ�ط������з�����˳�����֪ͨ�����������÷������Ѿ����Ƽ��ˡ�
�������صķ�����һ�� lua ����Ļ���Ŀǰ��ķ����������������һ���������ص��������÷��������˳��Ļ������û�з��ص������ɿ���������׳�һ�� error �����ԣ�ֻҪ��ʹ�� pcall ����Ҫ��صķ�����һ�� skynet.call �����ܸ�֪�������˳��ˡ�
skynet ���°汾������һ�� debug ָ�� link ��������������£�
pcall(skynet.call, address, "debug", "LINK")