socketio / socket.io

Realtime application framework (Node.JS server)
https://socket.io
MIT License
61.2k stars 10.11k forks source link

socket.io 1.0 with titanium (appcelerator) #1590

Closed fadaytak closed 3 years ago

fadaytak commented 10 years ago

exist a version of socket.io 1.0 to use with titanium (appcelerator) ?

or can we use 0.96 client with 1.0 server ?

cordially

dsalcedo commented 10 years ago

socket.io its a module for NodeJS. If you need add SOCKET.IO into your proyect only put:

<script src="https://cdn.socket.io/socket.io-1.x.x.js"></script>
<!--source: http://socket.io/blog/socket-io-1-0-4/-->

and make sure you have your server running socket.io

fadaytak commented 10 years ago

Thank you, but this file when we use a Webview. What I need a file adopted for titanium like this one

https://gist.github.com/iamyellow/3071689

Cordially

fadaytak commented 10 years ago

What I need is for native use as library, not in Webview

HilkoLantinga commented 10 years ago

You need to create a native module with socketrocket (or use net.iamyellow.tiws) and slighty adjust the socket.io client so it uses that, does not use window, uses Ti.Network.createHTTPClient() and stub xdomainCheck. I might update my fork (https://github.com/HilkoLantinga/tiws) next week.

Do you really need socket.io? You could use ws in node and net.iamyellow.tiws in Appcelerator Titanium if all your clients support websockets. Or also pipe to a tcp socket for your Titanium clients if you don't use TLS (as far as I know Titanium does not support TLS with TCP, so you would need another native module for that).

That being said... Maybe I could make my adjustments in such a way that they can be integrated in engine.io-client (and maybe when needed socket.io-client), so it runs in node, a browser and Appcelerator Titanium + net.iamyellow.tiws. Is a Pull Request for something like that acceptable for Automattic?

dsalcedo commented 10 years ago

+1

rauchg commented 10 years ago

We're working on out-of-the-box Titanium support. Will keep you guys posted

fadaytak commented 10 years ago

any news about titanium support for the new version 1.0?

HilkoLantinga commented 10 years ago

I'm still trying, no luck so far. But got some work I need to finish first, will have a 3th look after this weekend.

kristjanmik commented 10 years ago

Any updates on this?

HilkoLantinga commented 10 years ago

Can't get it to connect no matter what I do, tried websockets and long poll. I really don't get it, 0.8.x and 0.9.x where so easy.

danpe commented 10 years ago

:+1: I also tried while 1.0 was in beta. It seems to be very hard because socket.io reference a lot of external libraries like engine.io etc.

AppWerft commented 10 years ago

I'm using tiws and version 0.9.11 both on client and server. It works like a charm on android, but the iphone version crashes after connection. Here the article in Q&A.

HilkoLantinga commented 10 years ago

Use my 0.9.16 version, that works perfectly on iOS (5, 6 and 7).

AppWerft commented 10 years ago

Do you mean this: https://github.com/HilkoLantinga/socket.io-client/blob/master/socket.io.js ? It seams to be a pure JS version

HilkoLantinga commented 10 years ago

You use that with tiws.

AppWerft commented 10 years ago

OK, I found. thanx.

n.intersect = function(e, t) {
            var r = [], i = e.length > t.length ? e : t, s = e.length > t.length ? t : e;
            for (var o = 0, u = s.length; o < u; o++) {
                if (~n.indexOf(i, s[o])) {  // <== is it correct, I'm wondering
                    r.push(s[o])
                }
            }
            return r
        };
AppWerft commented 10 years ago

OK, I can my compile app with your js file without issues. But on runtime it crashes the app. What version of socket.io do you use on server?

HilkoLantinga commented 10 years ago

0.9.16, I do something like this on the client:

var io = require('socket.io'),
    socket = io.connect('http://10.10.10.10:8188', {
        'transports' : ['websocket'],
        'reconnect' : true,
        'reconnection delay' : 100,
        'reconnection limit' : 5000,
        'max reconnection attempts' : Infinity,
        'query' : 'description=' + Ti.Network.encodeURIComponent(Ti.App.description) + '&guid=' + Ti.App.guid + '&id=' + Ti.App.id + '&name=' + Ti.App.name + '&version=' + Ti.App.version + '&installId=' + Ti.App.installId
    });

Server is something like this:

var app = require('express')(),
    server = require('http').Server(app),
    io = require('socket.io')(server);
server.listen(8188);
AppWerft commented 10 years ago

Hi Hilko,

Thanks, I will try to embed your code or use it for inspiration. Now I start in this manner:

var Cligga = function() { this.eventhandlers = []; this.socket = require('vendor/socket.io.0.9.16').connect('ws://134.100.29.95:1334', { transports : ['websocket'], 'reconnect' : true, 'reconnection delay' : 100, 'reconnection limit' : 5000, 'max reconnection attempts' : Infinity, }); console.log('Info: socket connected ~~~' + this.socket); this.socket.on('connect', function() { Ti.API.log('connected!'); });

After connecting, this in on console:

[DEBUG] : Loading: /var/mobile/Applications/E6A8050E-494A-4FB1-9688-C510FEAD936B/Cligga.app/controls/cligga.adapter.js, Resource: controls/cligga_adapter_js [INFO] : Info: socket connected ~~~[object Object] [DEBUG] : Loading: /var/mobile/Applications/E6A8050E-494A-4FB1-9688-C510FEAD936B/Cligga.app/vendor/socket.io.0.9.16.js, Resource: vendor/socket_io_0_9_16_js

I'm wondering:

first the connected status (from my output) and the the module loading …

Cheers!

Rainer

On 13/07/14 13:54, Hilko Lantinga wrote:

'reconnect' : true, 'reconnection delay' : 100, 'reconnection limit' : 5000, 'max reconnection attempts' : Infinity,

Dipl.-Ing. Rainer Schleevoigt Certified TYPO3 Integrator Certified Titanium App Developer

Novalisweg 10

22303 Hamburg ℡ 040 27806982 |Ust-ID: DE239491976|||||||

HilkoLantinga commented 10 years ago

So it works for you now? If so, great and enjoy, if not I don't see any error in your output.

AppWerft commented 10 years ago

On 13/07/14 14:14, Hilko Lantinga wrote:

So it works for you now? If so, great and enjoy, if not I don't see any error in your output.

This is the problem, it crashes and I dont see any messages.

On server I have different logs depending on Android/iOS. At iOS I miss a line.

Here the outout of android request on server:

debug: client authorized info: handshake authorized crqMwdAhZnSJ_AVsPKBd debug: setting request GET/socket.io/1/websocket/crqMwdAhZnSJ_AVsPKBd debug: client authorizedfor
debug: websocket writing1::

and the same if iOS connect:

debug: client authorized info: handshake authorized lTC9by6zi_2KS25SPKBc debug: websocket writing2::

As you can see: on iOS the line

setting request GET/socket.io/1/websocket/crqMwdAhZnSJ_AVsPKBd

is missing.

— Reply to this email directly or view it on GitHub https://github.com/Automattic/socket.io/issues/1590#issuecomment-48838941.

Dipl.-Ing. Rainer Schleevoigt Certified TYPO3 Integrator Certified Titanium App Developer

Novalisweg 10

22303 Hamburg ℡ 040 27806982 |Ust-ID: DE239491976|||||||

fadaytak commented 10 years ago

the problem is with the new version 1.0 it works fine with 0.9 ... but today socket 1.0 is more efficient, so we need a 1.0 client

i hope that you will get a solution quickly

AppWerft commented 10 years ago

On 13/07/14 14:37, fadaytak wrote:

the problem is with the new version 1.0 it works fine with 0.9 ...

I have unstall with

npm install socket.io@0.9.16

I think too that 1.0 is better…

but today socket 1.0 is more efficient, so we need a 1.0 client

i hope that you will get a solution quickly

In last two weeks I'm working with the issue, but I see any solution.

— Reply to this email directly or view it on GitHub https://github.com/Automattic/socket.io/issues/1590#issuecomment-48839422.

Dipl.-Ing. Rainer Schleevoigt Certified TYPO3 Integrator Certified Titanium App Developer

Novalisweg 10

22303 Hamburg ℡ 040 27806982 |Ust-ID: DE239491976|||||||

HilkoLantinga commented 10 years ago

For titanium it doesn't matter. But if you have browser clients too then 1.0 makes sense.

I'm not counting on a quick solution from my side. I've started at a new job this week that requires a lot of flying, so I will not have the time. Maybe if I'm really lucky and find a quick fix.

Rainer, could you create a small app that does not work and make a repo for it?

AppWerft commented 10 years ago

On 13/07/14 14:45, Hilko Lantinga wrote:

For titanium it does matter. But if you have browser clients too then 1.0 makes sense.

my plan was to work with native views. Now I think about a push not solution. My goal is a voting app for education procresses.

— Reply to this email directly or view it on GitHub https://github.com/Automattic/socket.io/issues/1590#issuecomment-48839570.

Dipl.-Ing. Rainer Schleevoigt Certified TYPO3 Integrator Certified Titanium App Developer

Novalisweg 10

22303 Hamburg ℡ 040 27806982 |Ust-ID: DE239491976|||||||

kopiro commented 10 years ago

Any update?

nicco commented 10 years ago

Hey Guys any news on SocketIo 1.0 on titanium? Thank you so much for working on it!

HilkoLantinga commented 10 years ago

I've given up, using 0.9.16 for now.

Op 6 okt. 2014 om 19:22 heeft nicco notifications@github.com het volgende geschreven:

Hey Guys any news on SocketIo 1.0 on titanium? Thank you so much for working on it!

— Reply to this email directly or view it on GitHub.

nicco commented 10 years ago

this looks promising, the also use browserify

https://github.com/smclab/titaniumifier

but as of now:

With titaniumifier, you will not be able to use or depend on ‘complex’ e ‘deeply’ node-ish packages like socket.io;

…but…

we worked (and still working) on providing a solution to use every Node.js package directly in your app

ghost commented 10 years ago

I'm using socket.io version 0.9.16 and works fine on simulator but when I try to connect on iPhone 5C iOS 8.1 nothing happens =(

Someone can help? Thanks

HilkoLantinga commented 10 years ago

You need tiws and https://github.com/HilkoLantinga/socket.io-client/blob/master/socket.io.js

ghost commented 10 years ago

I was trying to run on localhost on my iphone... that's why nothing happens I guess hahaha Any news about latest version of socket.io? Thanks for your code @HilkoLantinga

yuchi commented 9 years ago

Please watch the discussion at omorandi/tiws#9 to get updates.

I’m the maintainer of titaniumifier at @smclab, and we’re working on a titaniumified solution for socket.io.

DouglasHennrich commented 9 years ago

Any news about this threat? I reaaaally need socket.io 1.0 on titanium =/

WillDent commented 8 years ago

@yuchi did you make any progress on this? Do you have some code that is partially working and/or that you can share and maybe others can help/contribute?

rishikatyal117 commented 8 years ago

Any Success ?? Is there Socket.io client for Titanium now ? My Server is on Socket.io 1.4.5.

AppWerft commented 8 years ago

Maybe (idea) we looking to Titanium pubnub implemenation. This is done with pure TiJS: https://github.com/pubnub/javascript/blob/master/titanium/lib/platform.js

yagitoshiro commented 8 years ago

I'm working on this and wrote a module. It's working so far. Stay tuned.

AppWerft commented 8 years ago

Thanks

yagitoshiro commented 8 years ago

@AppWerft By now it supports only iOS and installation process is so complicated. And many functions are left undone, but works.

https://github.com/yagitoshiro/TiSocketIOClient

var socket, io;

io = require('ro.toshi.ti.mod.tisocketio');
socket = io.createSocket({
  url: 'http://localhost:9999/'
});

socket.on('connect', function(){
  Ti.API.info('connected');
  socket.emit('fromClient', {message: 'Hello'});
});

socket.on('message', function(e){
  Ti.API.info(e);
});

socket.connect();

$.index.addEventListener('close', function(){
  socket.disconnect();
});
DouglasHennrich commented 6 years ago

Any news?

janvennemann commented 5 years ago

Just in case someone stumbles upon this, there is an official module by now: https://github.com/appcelerator-modules/titanium-socketio