Beruflich Dokumente
Kultur Dokumente
Untuk tugas besar EL5206 teman teman dapat menggunakan server RabbitMQ dengan konfigurasi
berikut
Hostname : 167.205.7.226
Username : ARmachine
Password : 12345
Virtual Host : /ARX
Untuk nama exchange, queue dan routing key harap tambahkan prefix berikut pada nama exchange,
queue dan routing keynya agar tidak bertabrakan dengan kelompok lain.
Prefix : TMDG2017-[NomorKelompok]-[BebasDiisiNamaApaSaja]
namespace Publisher_cmd
{
class RMQ
{
public ConnectionFactory connectionFactory;
public IConnection connection;
public IModel channel;
public void InitRMQConnection(string host = "167.205.7.226", int port = 5672,
string user = "ARmachine",
string pass = "12345", string vhost = "/ARX")
{
connectionFactory = new ConnectionFactory();
connectionFactory.HostName = host;
connectionFactory.Port = port;
connectionFactory.UserName = user;
connectionFactory.Password = pass;
connectionFactory.VirtualHost = vhost;
}
public void CreateRMQConnection()
{
connection = connectionFactory.CreateConnection();
Console.WriteLine("Koneksi " + (connection.IsOpen ? "Berhasil!" : "Gagal!"));
}
public void CreateRMQChannel(string queue_name, string routingKey = "TMDG2017-5-
Ifadin", string exchange_name =
"TMDG2017-5-Ifadin")
{
if (connection.IsOpen)
{
channel = connection.CreateModel();
Console.WriteLine("Channel " + (channel.IsOpen ? "Berhasil!" :
"Gagal!"));
}
if (channel.IsOpen)
{
channel.QueueDeclare(queue: queue_name,
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
Console.WriteLine("Queue telah dideklarasikan..");
}
}
public void SendMessage(string tujuan, string msg = "send")
{
byte[] responseBytes = Encoding.UTF8.GetBytes(msg);// konversi pesan dalam
bentuk string menjadi byte
channel.BasicPublish(exchange: "",
routingKey: tujuan,
basicProperties: null,
body: responseBytes);
Console.WriteLine("Pesan: '" + msg + "' telah dikirim.");
}
public void Disconnect()
{
channel.Close();
channel = null;
Console.WriteLine("Channel ditutup!");
if (connection.IsOpen)
{
connection.Close();
}
Console.WriteLine("Koneksi diputus!");
connection.Dispose();
connection = null;
}
}
class Program
{
static void Main(string[] args)
{
RMQ rmq = new RMQ();
Console.WriteLine("Tekan tombol apapun untuk inisialisasi RMQ parameters.");
Console.ReadKey();
rmq.InitRMQConnection(); // inisialisasi parameter (secara default) untuk
koneksi ke server RMQ
Console.WriteLine("Tekan tombol apapun untuk membuka koneksi ke RMQ.");
Console.ReadKey();
rmq.CreateRMQConnection(); // memulai koneksi dengan RMQ
Console.Write("Masukkan nama queue channel untuk mengirim pesan melalui
RMQ.\n>> ");
string queue_name = Console.ReadLine();
rmq.CreateRMQChannel(queue_name);
Console.Write("Masukkan pesan yang akan dikirim atau 'exit' to close.\n>>");
Console.Write(">> tujuan: ");
string tujuan = Console.ReadLine();
Console.Write(">> pesan: ");
string inputMsg = Console.ReadLine();
while (inputMsg != "exit")
{
rmq.SendMessage(tujuan, inputMsg);
Console.Write(">> tujuan: ");
tujuan = Console.ReadLine();
Console.Write(">> pesan: ");
inputMsg = Console.ReadLine();
}
rmq.Disconnect();
}
}
}
///////RMQ-HOLOLENS start :)
RMQ rabbitmq;
///////RMQ-HOLOLENS end :)
///////RMQ-HOLOLENS start :)
rabbitmq = new RMQ();
rabbitmq.InitRMQConnection();
rabbitmq.CreateRMQConnection();
///////RMQ-HOLOLENS end :)
// Enable input
EnableGestureManipulation = true;
EnableGestureTapped = true;
moon.Material = Material.FromImage("Textures/Moon.jpg");
// Run a few actions to spin the Earth, the Moon and the clouds.
earthNode.RunActions(new RepeatForever(new RotateBy(duration: 1f,
deltaAngleX: 0, deltaAngleY: -4, deltaAngleZ: 0)));
await TextToSpeech("Hello world from UrhoSharp!");
}
///////RMQ-HOLOLENS start :)
protected override void OnUpdate(float timeStep)
{
//konsep
//listen
rabbitmq.WaitingMessage("TMDG2017-5-Ifadin");
//terima data
var data = rabbitmq.getData();
Debug.WriteLine("Isi:" + data);
//gerakin bidak ??
//kosongkan data
data = "";
Debug.WriteLine("Isi:" + data);
//selesai
}
///////RMQ-HOLOLENS end :)
//Handle input:
Vector3 earthPosBeforeManipulations;
public override void OnGestureManipulationStarted() =>
earthPosBeforeManipulations = earthNode.Position;
public override void OnGestureManipulationUpdated(Vector3 relativeHandPosition)
=>
earthNode.Position = relativeHandPosition + earthPosBeforeManipulations;
Tujuan: TMDG2017-5-Ifadin
Pesan: terserah
Pada output debug hololens, perhatikan jika pesan dari publisher sudah masuk
Karena getData nya di fungsi OnUpdate, jadi di output debug nya muncul berkali2. Edit2 sesuai
kebutuhan kalian ya