2012-02-08 9 views
0

Socket.IOのWebSocketの使用index.htmlとapp.js(サーバー)が一緒に配置されている私の家のコンピューターからチャットアプリケーションを正常に管理しました。私のウェブホストはWebSocketを提供していないので、自分のコンピュータ上にapp.js(サーバー)をホストし、ウェブホスト上で実際のWebページを接続したいと考えています。私は接続を確立するのが難しいです。私のポートは転送されます。私はリンクを確立するために変更する必要があることを私のapp.js内の何かを信じています。ここに私のコードはSocket.IO WebSocketサーバー/ページの異なるホスト

app.js(サーバー、ローカルコンピュータをオフに実行)app.jsで

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

app.listen(8080); 

// routing 
app.get('/', function (req, res) { 
    res.sendfile('http://mywebhost.com/chat.php'); 
}); 

// 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); 
}); 
}); 

(ウェブホスト上で実行)chat.php

<script> 
var socket = io.connect(\'http://scope.bnetweb.org:8080\'); 
// various irrelevant javascript 

私はかなり確信しています

app.get('/', function (req, res) { 
    res.sendfile('http://mywebhost.com/chat.php'); 
}); 

他に何かを変更する必要がありますか?または完全に削除しますか?私はこれがSocket.IOの方法で、不正な接続が行われていないことを確認する方法だと思います。これを達成するためにどんな助けも大いに評価されます。

答えて

0

単純に分割しないことで解決します。 IT担当者の多くは、異なるホスト上でサーバーとクライアントを混在させることができないという問題を抱えています。おそらくSocket.IOによってこれがすぐに簡単になるでしょう。他の誰かがより良い選択肢を提示したら、返信してください。

関連する問題