2016-06-11 22 views
0

私はいくつかの関数とデータベース(xamppのApacheとmySQL)からのいくつかのクエリに対してAngularJSとphpを適用する小さなWebアプリケーションを持っています。今私は、Webアプリケーションの簡単なチャットに適用したいと思うし、どのようにポートやどのように設定するかわからない。 http://socket.io/get-started/chat/xamppとnode(socket.io)を連携させる

(XAMPPは80と443を示して、私は、このような

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 

}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
}); 


http.listen(443, function(){ 
    console.log('listening on *:443'); 
}); 

私はポート443および80をしようとしているようindex.jsを持っていますが、彼らは働くように見えるdoesntの、ノーアイデアに似たものに続き

どのポートが動作)

私のJSファイルその後、私のブラウザコンソールでvar socket = io();

を持って、私が何かを取得していますlike

socket.io-1.2.0.js:2 GET http://localhost/socket.io/?IO=3&transport=polling&t=1465649664392-0 404 (Not Found) 

どのようにこの問題を解決できますか?私はnode index.jsを実行した後にcmdにa user connectedのような出力を期待していますが、そうではありません。

私はチャットの例に従いましたが、xamppなしで正常に動作します。

答えて

0

あなたの問題は、socket.ioが動作するためには、http経由でバックエンドと通信できる必要があります(たとえば、switch the protocol)。しかし、xamppがポートを使用している場合は、動作しません。 xhamppがhttp://localhost/socket.io/*に要求を転送する場所で、node.jsサーバーに何か試してみてください。

あなたはポート8000

node.jsサーバを起動するためにあなたが持っているだろう、必要なモジュールが続いて
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 

を有効になっていることを確認してください ProxyPass directive in the Apache httpd.confを使用しても

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/socket.io   [NC] 
RewriteCond %{QUERY_STRING} transport=websocket [NC] 
RewriteRule /(.*)   ws://localhost:8000/$1 [P,L] 

ProxyPass  /socket.io http://localhost:8000/socket.io 
ProxyPassReverse /socket.io http://localhost:8000/socket.io 

ような何かを行うことができます

http.listen(8000, function(){ 
    console.log('listening on *:8000'); 
}); 
+0

を作品 リダイレクトしませんファイル? 'localhost/foldername'のような通常xamppにアクセスするのですか? – Lester

+0

あなたはすべてを正常に行います。 'httpd.conf'のどこにでもディレクティブを追加します。私はファイルの最後に追加しました。 –

+0

あなたの事例はありますか?私はあなたが言ったすべてをやったが、何も変わっていない(おそらくこれらのことについての知識が不足している) – Lester

0

ヨーuが、単純にこれを行うことができますし、任意のHTTPの必要は私は設定のどこにディレクティブを入れてください、あなたのクライアント側のjs

var configUrl = 'http://localhost:3000';// currently my node js using this port 
var socket = io(configUrl); 

を開いて、物事を残ってクライアント側にスムーズに

socket.emit('chatMessage', ... 
socket.on('chatMessage', .. 
関連する問題