Я учусь Node JS и столкнулся с каким-то странным поведением, на которое, возможно, кто-то знает ответ. Многие посты с учебниками, с которыми я сталкивался, говорят о том, что на стороне клиента для отправки запроса на сервер используется "socket.on ('connect', function () {blah blah})". По сути, это должно остановить вызов от отправки на сервер до тех пор, пока сервер не установит соединение с клиентом, однако, когда я тестирую код, он работает до тех пор, пока сначала запускается клиент html, а затем запускается node js. Если node js сначала запускает серверный код, а затем запускается клиентская сторона html, по какой-то причине функция emit не обращается к серверу. Если я опускаю функцию socket.on и go прямо к моему Функция socket.emit, сервер получает функцию emit от клиента. Если node js не выполняется первым, клиентская сторона html продолжает работать до тех пор, пока node js не запустит серверный скрипт, после чего клиент подключится, и отправляет запрос автоматически. Кто-нибудь знает, почему это происходит? Как я уже сказал, я все еще изучаю сокеты и Node JS, поэтому я бы Я понимаю, что такое поведение, а не просто продолжаю писать код, хотя я заставил его работать. Любая предоставленная вами информация будет чрезвычайно ценной. Спасибо. :)
// Server side
var express = require('express');
var socket = require('socket.io');
var app = express();
var server = app.listen(1111, function(){ console.log("Server Listening"); });
var io = socket(server);
io.on('connect', function(socket) {
socket.on('Contact', function(data) {
socket.join(data);
console.log(data); // just to test if data is sent
});
});
// Client in head section
<script src = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.js"></script>
<script type = "text/javascript">
var socket = io.connect("http://localhost:1111");
function Setup() { // called when page has loaded
//blah blah blah lots and lots of code
var data = "blahblah"; // room to join
socket.on('connect', function(){
socket.emit('Contact', data);
});
}
// If I remove the socket.on function it works flawlessly everytime. Left in, it will only fire if the
// node js server file is launched after the client launches