2015-03-18 3 views
0

У меня есть nodejs чат-сервер с Дифференц событий "соединения", "sendchat", "switchRoom" ...Appcelerator Connecto на nodejs сервер

/////////////////////////////////////////////////////////////// 
// SERVER SETUP 


var express = require('express') 
, app = express() 
, http = require('http') 
, server = http.createServer(app) 
, io = require('socket.io').listen(server); 

server.listen(1214); 



var admin_name = '<font color="red">*Admin*</font>'; 
var users; 
// rooms which are currently available in chat 
var rooms = ['public']; 

io.sockets.on('connection', function (socket) { 

// when the client emits 'adduser', this listens and executes 
socket.on('adduser', function(username, password){ 
    getLogin(username, password, socket) 
}); 

// when the client emits 'sendchat', this listens and executes 
socket.on('sendchat', function (data) { 
    insertMess(socket.username, data, socket.room); 
    var nd = data.split(">"); 
    if(nd[0] == 'cmd') 
    { 
     switch(nd[1]) 
     { 
      case 'admin-mess': 
       //Return message to user 
       socket.emit('updatechat', admin_name, '<font color="red">your message was sent to all rooms.</font><br>'+nd[2]); 
       //broadcast message to all rooms 
       for(var i=0; i<rooms.length; i++) 
       { 
        socket.broadcast.to(rooms[i]).emit('updatechat', '<font color="red">'+admin_name+'</font>', '<font color="red">'+nd[2]+'</font>'); 
       } 
      break; 
      default: 
       socket.emit('updatechat', admin_name, 'you try to send a wrong command...'); 
      break; 
     } 

     return; 
    } 

    // we tell the client to execute 'updatechat' with 2 parameters 
    io.sockets.in(socket.room).emit('updatechat', socket.username, data); 
}); 

socket.on('switchRoom', function(newroom){ 
    console.log('--> '+socket.username+" joined the room : "+newroom); 
    // leave the current room (stored in session) 
    socket.leave(socket.room); 

    //get userlist of the room 
    users = getRoomUsers(socket.room); 
    //update userlist in room 
    socket.broadcast.to(socket.room).emit('updateusers', users); 

    // join new room, received as function parameter 
    socket.join(newroom); 
    socket.emit('updatechat', admin_name, 'you are connected to "'+ newroom+'"'); 
    // sent message to OLD room 
    socket.broadcast.to(socket.room).emit('updatechat', admin_name, socket.username+' has left this room'); 
    // update socket session room title 
    socket.room = newroom; 
    socket.broadcast.to(newroom).emit('updatechat', admin_name, socket.username+' has joined this room'); 
    socket.emit('updaterooms', rooms, newroom); 
    //socket.broadcast.to(newroom).emit('updateuserlist', socket.clients(newroom)); 


    users = getRoomUsers(socket.room); 
    //update userlist in room 
    socket.broadcast.to(socket.room).emit('updateusers', users); 
    //update userlist for client 
    socket.emit('updateusers', users); 


}); 

// when the user disconnects.. perform this 
socket.on('disconnect', function(){ 
    // echo globally that this client has left 
    socket.broadcast.emit('updatechat', admin_name, socket.username + ' has disconnected'); 
    socket.leave(socket.room); 
    console.log('<-- '+socket.username+" has disconnected".info); 
    //get userlist of the room 
    users = getRoomUsers(rooms[0]); 
    //update userlist for client 
    socket.broadcast.emit('updateusers', users); 
}); 

}); 


... 

мне нужно подключить Titanium приложение (СВН/Android) на мой сервер. Мои вопросы:

  • Как создать подключение socket.io к моему серверу?
  • Как я могу прослушивать события сокетов?
  • Как я могу испустить события?

Может ли кто-нибудь иметь пример?

Thx много!

+0

Вам понадобится библиотека на стороне клиента для подключения к серверу. Вы можете получить его на свой домен domain.com/socket.io/socket.io.js и кэшировать его локально. Оттуда вы можете получить доступ к глобальному io, а затем подключиться к var socket = io.connect(); – Yousef

ответ

1

Вам понадобится библиотека на стороне клиента для подключения к серверу. Вы можете получить его на свой домен domain.com/socket.io/socket.io.js и кэшировать его локально. Оттуда вы можете получить доступ к глобальному ИО, а затем соединиться с:

var socket = io.connect(); 

Это может быть даже лучше, чтобы скопировать библиотеку в приложение и имеет фоновую службу, которая извлекает самую новую версию каждый х дней/недель.

+0

Я попытался добавить файл socket.io.js в свое приложение, но он не компилируется, «не может найти переменный навигатор», строка 2057. Вот мой код: var io = require ("socket. io "); вар сокет = io.connect ("HTTP: // домен: 1214", { 'транспортирует': [ ''] WebSocket, 'переподключение': правда, 'восстановить задержку': 100, «восстановить предел ': 5000, «Максимальные попытки повторного соединения»: 3 }); socket.on ('connect', function() { Ti.API.info ("Connected"); }); – Zuhn

+0

@ Zuhn - ваш код на самом деле 'домен: 1214' или вы помещаете свой фактический веб-адрес i.e. 'myserver.com:1214'? Если вы тестируете локально, это должно быть «http: // localhost: » – Yousef

+0

домен представляет мой адрес ip :) (у меня есть небольшой сервер vps) (на данный момент я загружаю socket.io в веб-просмотр и fireEvent на каждом событии сокета .. это прекрасно, но еще не идеально: p! – Zuhn

Смежные вопросы