Mam kilka pytań dotyczących używania gniazda IO z PHP i takie, jestem nowy dla nodejs/socket io, więc wiem bardzo mało, właśnie zacząłem używać go w ciągu ostatnich kilku dni i dochodzę do punktu, w którym Wdrażę to na mojej stronie internetowej (jak na razie właśnie budowałem małe przykłady testowe).Node.js + Socket IO + Apache + PHP usuwa port z adresu URL?
Pytanie: Obecnie muszę dodać port do mojego hosta lokalnego, aby go wyświetlić i działać, oczywiście nie mogę tego mieć, gdy jest to witryna internetowa na żywo, a także nie mogę tego zrobić, gdy używam php pages (po prostu robiłem przykłady z html) Jeśli używam portu 4000 dla mojego serwera gniazd io muszę iść do: localhost: 4000, jednak muszę być w stanie przejść do: localhost: 8888/mysitefolder (8888 jest portem dla mojego MAMP, dla php i wszystkiego) widziałem w pytaniach, gdzie ludzie rozwiązali to, ale nie byłem w stanie zmusić go do pracy dla siebie.
Oto mój kod:
chat.js
var app = require('express').createServer(),
io = require('socket.io').listen(app);
app.listen(4000);
var users = [];
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('connected');
socket.on('userID', function (userID) {
users.push(userID);
});
socket.on('message', function (message) {
socket.broadcast.emit('message-response', { data: message});
});
});
index.html
<title>Testing</title>
<script src="/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
function mktime(){
var newDate = new Date;
return newDate.getTime();
}
function appendMessage(data)
{
$("body").append(data+"<br />");
}
var socket = io.connect('http://localhost:4000');
socket.on('connected', function() {
//select id from database in real environment
socket.emit("userID", mktime());
});
socket.on('message-response', function (message) {
appendMessage(message.data);
});
$(document).ready(function(){
$('#input').keypress(function(event) {
if (event.keyCode != 13) return;
var msg = $("#input").val();
if (msg) {
socket.emit('message', msg);
appendMessage(msg);
$("#input").val('').focus();
}
});
});
</script>
<body>
<input type="text" id="input"><br>
</body>
Co masz na myśli przez „Muszę być w stanie przejść do: localhost: 8888/mysitefolder”? Wszystko, co musisz zrobić, to odwołać się do pliku js poprawnie jak: "localhost: 4000/socket.io/socket.io.js" i to wszystko. Nie potrzebujesz nawet serwera Express, możesz obsługiwać plik indeksu za pomocą kodu JS. – alessioalex
Cóż localhost: 8888 jest tam, gdzie działa MAMP, dla php i wszystkiego, mysitefolder jest po prostu folderem, aby pliki php działały. także, co mogę zmienić w moich dwóch plikach? Po prostu szybko spróbowałem i wystąpił błąd. (Tak jak powiedziałem, jestem nowy z tym, więc nie jestem pewien jak wszystko działa) –
nieważne, mam to działa. Dzięki. –