Note that there are some explanatory texts on larger screens.

plurals
  1. POfacebook and socket.io node.js
    primarykey
    data
    text
    <p>I have a some god idea, but I have some problems... how to connect facebook user to node app - socket.io </p> <p>I was created an socket.io chat but now want to allow facebook users to come to chat to create something like facebook group CHAT. I think that idea is fine?</p> <p>Here is my code for chat:</p> <p>server side file - app.js</p> <pre><code>var app = require('express').createServer() var io = require('socket.io').listen(app); app.listen(8080); // routing app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); // usernames which are currently connected to the chat var usernames = {}; // rooms which are currently available in chat var rooms = ['room1','room2','room3']; io.sockets.on('connection', function (socket) { // when the client emits 'adduser', this listens and executes socket.on('adduser', function(username){ // store the username in the socket session for this client socket.username = username; // store the room name in the socket session for this client socket.room = 'room1'; // add the client's username to the global list usernames[username] = username; // send client to room 1 socket.join('room1'); // echo to client they've connected socket.emit('updatechat', 'SERVER', 'you have connected to room1'); // echo to room 1 that a person has connected to their room socket.broadcast.to('room1').emit('updatechat', 'SERVER', username + ' has connected to this room'); socket.emit('updaterooms', rooms, 'room1'); }); // when the client emits 'sendchat', this listens and executes socket.on('sendchat', function (data) { // 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){ // leave the current room (stored in session) socket.leave(socket.room); // join new room, received as function parameter socket.join(newroom); socket.emit('updatechat', 'SERVER', 'you have connected to '+ newroom); // sent message to OLD room socket.broadcast.to(socket.room).emit('updatechat', 'SERVER', socket.username+' has left this room'); // update socket session room title socket.room = newroom; socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room'); socket.emit('updaterooms', rooms, newroom); }); // when the user disconnects.. perform this socket.on('disconnect', function(){ // remove the username from global usernames list delete usernames[socket.username]; // update list of users in chat, client-side io.sockets.emit('updateusers', usernames); // echo globally that this client has left socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected'); socket.leave(socket.room); }); }); </code></pre> <p>and index.html</p> <pre><code>&lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt; &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"&gt;&lt;/script&gt; &lt;script&gt; var socket = io.connect('http://localhost:8080'); // on connection to server, ask for user's name with an anonymous callback socket.on('connect', function(){ // call the server-side function 'adduser' and send one parameter (value of prompt) socket.emit('adduser', prompt("What's your name?")); }); // listener, whenever the server emits 'updatechat', this updates the chat body socket.on('updatechat', function (username, data) { $('#conversation').append('&lt;b&gt;'+username + ':&lt;/b&gt; ' + data + '&lt;br&gt;'); }); // listener, whenever the server emits 'updaterooms', this updates the room the client is in socket.on('updaterooms', function(rooms, current_room) { $('#rooms').empty(); $.each(rooms, function(key, value) { if(value == current_room){ $('#rooms').append('&lt;div&gt;' + value + '&lt;/div&gt;'); } else { $('#rooms').append('&lt;div&gt;&lt;a href="#" onclick="switchRoom(\''+value+'\')"&gt;' + value + '&lt;/a&gt;&lt;/div&gt;'); } }); }); function switchRoom(room){ socket.emit('switchRoom', room); } // on load of page $(function(){ // when the client clicks SEND $('#datasend').click( function() { var message = $('#data').val(); $('#data').val(''); // tell server to execute 'sendchat' and send along one parameter socket.emit('sendchat', message); }); // when the client hits ENTER on their keyboard $('#data').keypress(function(e) { if(e.which == 13) { $(this).blur(); $('#datasend').focus().click(); } }); }); &lt;/script&gt; &lt;div style="float:left;width:100px;border-right:1px solid black;height:300px;padding:10px;overflow:scroll-y;"&gt; &lt;b&gt;ROOMS&lt;/b&gt; &lt;div id="rooms"&gt;&lt;/div&gt; &lt;/div&gt; &lt;div style="float:left;width:300px;height:250px;overflow:scroll-y;padding:10px;"&gt; &lt;div id="conversation"&gt;&lt;/div&gt; &lt;input id="data" style="width:200px;" /&gt; &lt;input type="button" id="datasend" value="send" /&gt; &lt;/div&gt; </code></pre> <p>and how to allow users to come to chta with their facebook account via fbLogin button:</p> <p>Here is fb login code, but HOW to implemet this code to my chat script to allow users to come with facebook accounts.</p> <pre><code>&lt;button id="fb-auth"&gt;Login&lt;/button&gt; &lt;script&gt; function updateButton(response) { Log.info('Updating Button', response); var button = document.getElementById('fb-auth'); if (response.status === 'connected') { button.innerHTML = 'Logout'; button.onclick = function() { FB.logout(function(response) { Log.info('FB.logout callback', response); }); }; } else { button.innerHTML = 'Login'; button.onclick = function() { FB.login(function(response) { Log.info('FB.login callback', response); if (response.status === 'connected') { Log.info('User is logged in'); } else { Log.info('User is logged out'); } }); }; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload