Skip to content

Commit 2b437cc

Browse files
author
abdulkadir polat
committed
tests and examples added
1 parent 0bc7622 commit 2b437cc

File tree

20 files changed

+698
-0
lines changed

20 files changed

+698
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
/**
3+
* This file is part of the PocketIO package
4+
*
5+
* For the full copyright and license information, please view the LICENSE file
6+
* that was distributed with this source code.
7+
*/
8+
9+
use PocketIO\Client;
10+
use PocketIO\Engine\SocketIO\SocketIO;
11+
12+
require __DIR__ . '/../../../vendor/autoload.php';
13+
14+
$client = new Client(new SocketIO('http://localhost:1337', [
15+
'headers' => [
16+
'X-My-Header: websocket rocks',
17+
'Authorization: Bearer 12b3c4d5e6f7g8h9i'
18+
]
19+
]));
20+
21+
$client->initialize();
22+
$client->emit('broadcast', ['foo' => 'bar']);
23+
$client->close();
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "example_emitter_with_headers",
3+
"version": "1.0.0",
4+
"main": "server.js",
5+
"scripts": {
6+
"start": "supervisor --inspect server.js"
7+
},
8+
"engines": {
9+
"node": ">=10.15"
10+
},
11+
"dependencies": {
12+
"socket.io": "^2",
13+
"supervisor": "^0.12.0",
14+
"winston": "^2"
15+
}
16+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
var server = require('http').createServer(),
2+
io = require('socket.io')(server),
3+
logger = require('winston'),
4+
port = 1337;
5+
6+
// Logger config
7+
logger.remove(logger.transports.Console);
8+
logger.add(logger.transports.Console, { colorize: true, timestamp: true });
9+
logger.info('SocketIO > listening on port ' + port);
10+
11+
// set up initialization and authorization method
12+
io.use(function (socket, next) {
13+
var auth = socket.request.headers.authorization;
14+
if(auth){
15+
const token = auth.replace("Bearer ", "");
16+
logger.info("auth token", token);
17+
// do some security check with token
18+
// ...
19+
20+
return next();
21+
}
22+
else{
23+
return next(new Error("no authorization header"));
24+
}
25+
});
26+
27+
io.on('connection', function (socket){
28+
var nb = 0;
29+
30+
logger.info('SocketIO > Connected socket ' + socket.id);
31+
logger.info("X-My-Header", socket.handshake.headers['x-my-header']);
32+
33+
socket.on('broadcast', function (message) {
34+
++nb;
35+
logger.info('PocketIO broadcast > ' + JSON.stringify(message));
36+
});
37+
38+
socket.on('disconnect', function () {
39+
logger.info('SocketIO : Received ' + nb + ' messages');
40+
logger.info('SocketIO > Disconnected socket ' + socket.id);
41+
});
42+
});
43+
44+
server.listen(port);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
/**
3+
* This file is part of the PocketIO package
4+
*
5+
* For the full copyright and license information, please view the LICENSE file
6+
* that was distributed with this source code.
7+
*/
8+
9+
use PocketIO\Client,
10+
PocketIO\Engine\SocketIO\SocketIO;
11+
12+
require __DIR__ . '/../../../vendor/autoload.php';
13+
14+
$client = new Client(new SocketIO('http://localhost:1337'));
15+
16+
$client->initialize();
17+
$client->of('/namespace');
18+
$client->emit('broadcast', ['foo' => 'bar']);
19+
$client->close();
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "example_emitter_with_namespace",
3+
"version": "3.0.0",
4+
"main": "server.js",
5+
6+
"scripts": {
7+
"start": "supervisor --debug server.js"
8+
},
9+
10+
"dependencies": {
11+
"socket.io": "~1.0.6",
12+
"winston": "*"
13+
}
14+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
var server = require('http').createServer(),
2+
io = require('socket.io')(server),
3+
logger = require('winston'),
4+
port = 1337;
5+
6+
// Logger config
7+
logger.remove(logger.transports.Console);
8+
logger.add(logger.transports.Console, { colorize: true, timestamp: true });
9+
logger.info('SocketIO > listening on port ' + port);
10+
11+
io.of('/namespace').on('connection', function (socket){
12+
var nb = 0;
13+
14+
logger.info('SocketIO /namespace > Connected socket ' + socket.id);
15+
16+
socket.on('broadcast', function (message) {
17+
++nb;
18+
logger.info('PocketIO /namespace broadcast > ' + JSON.stringify(message));
19+
});
20+
21+
socket.on('disconnect', function () {
22+
logger.info('SocketIO /namespace : Received ' + nb + ' messages');
23+
logger.info('SocketIO /namespace > Disconnected socket ' + socket.id);
24+
});
25+
});
26+
27+
io.of('/namespace2').on('connection', function (socket){
28+
var nb = 0;
29+
30+
logger.info('SocketIO /namespace2 > Connected socket ' + socket.id);
31+
32+
socket.on('broadcast', function (message) {
33+
++nb;
34+
logger.info('PocketIO /namespace2 broadcast > ' + JSON.stringify(message));
35+
});
36+
37+
socket.on('disconnect', function () {
38+
logger.info('SocketIO /namespace2 : Received ' + nb + ' messages');
39+
logger.info('SocketIO /namespace2 > Disconnected socket ' + socket.id);
40+
});
41+
});
42+
43+
server.listen(port);
44+
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* This file is part of the PocketIO package
4+
*
5+
* For the full copyright and license information, please view the LICENSE file
6+
* that was distributed with this source code.
7+
*/
8+
9+
use PocketIO\Client;
10+
use PocketIO\Engine\SocketIO\SocketIO;
11+
12+
require __DIR__ . '/../../../vendor/autoload.php';
13+
14+
$token = 'this_is_peter_token';
15+
16+
$client = new Client(new SocketIO('http://localhost:1337', [
17+
'headers' => [
18+
'X-My-Header: websocket rocks',
19+
'Authorization: Bearer ' . $token,
20+
'User: peter',
21+
]
22+
]));
23+
24+
$data = [
25+
'message' => 'How are you?',
26+
'token' => $token,
27+
];
28+
29+
$client->initialize();
30+
$client->emit('private_chat_message', $data);
31+
$client->close();
32+
33+
$token = 'this_is_peter_token';
34+
35+
$client = new Client(new SocketIO('http://localhost:1337', [
36+
'headers' => [
37+
'X-My-Header: websocket rocks',
38+
'Authorization: Bearer ' . $token,
39+
'User: peter',
40+
]
41+
]));
42+
43+
$data = [
44+
'message' => 'Do you remember me?',
45+
'token' => $token,
46+
];
47+
48+
$client->initialize();
49+
$client->emit('private_chat_message', $data);
50+
51+
$invalidToken = 'this_is_invalid_peter_token';
52+
53+
$data = [
54+
'message' => 'Do you remember me?',
55+
'token' => $invalidToken,
56+
];
57+
$client->emit('private_chat_message', $data);
58+
$client->close();
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "example_emitter_with_private_socket_id",
3+
"version": "1.0.0",
4+
"main": "server.js",
5+
"scripts": {
6+
"start": "supervisor --inspect server.js"
7+
},
8+
"engines": {
9+
"node": ">=10.15"
10+
},
11+
"dependencies": {
12+
"socket.io": "^2",
13+
"supervisor": "^0.12.0",
14+
"winston": "^2"
15+
}
16+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
var server = require('http').createServer(),
2+
io = require('socket.io')(server),
3+
logger = require('winston'),
4+
port = 1337;
5+
6+
// Logger config
7+
logger.remove(logger.transports.Console);
8+
logger.add(logger.transports.Console, { colorize: true, timestamp: true });
9+
logger.info('SocketIO > listening on port ' + port);
10+
11+
// Stored tokens
12+
var tokens = {};
13+
14+
// Stored users
15+
var users = {};
16+
17+
// set up initialization and authorization method
18+
io.use(function (socket, next) {
19+
var auth = socket.request.headers.authorization;
20+
var user = socket.request.headers.user;
21+
if(auth && user) {
22+
const token = auth.replace("Bearer ", "");
23+
logger.info("auth token", token);
24+
// do some security check with token
25+
// ...
26+
// store token and bind with specific socket id
27+
if (!tokens[token] && !users[token]) {
28+
tokens[token] = socket.id;
29+
users[token] = user;
30+
}
31+
32+
return next();
33+
}
34+
else{
35+
return next(new Error("no authorization header"));
36+
}
37+
});
38+
39+
io.on('connection', function (socket){
40+
var nb = 0;
41+
42+
logger.info('SocketIO > Connected socket ' + socket.id);
43+
logger.info("X-My-Header", socket.handshake.headers['x-my-header']);
44+
45+
socket.on('private_chat_message', function (message) {
46+
++nb;
47+
logger.info('PocketIO private_chat_message > ' + JSON.stringify(message));
48+
49+
if (!message['token']) {
50+
logger.info('PocketIO private_chat_message > ' + "Token is missed.");
51+
}
52+
53+
if (!tokens[message['token']]) {
54+
logger.info('PocketIO private_chat_message > ' + "Token is invalid");
55+
}
56+
57+
var user = users[message['token']];
58+
59+
if(!user) {
60+
logger.info('PocketIO private_chat_message > ' + 'Sorry. I don\'t remember you.');
61+
} else if (message['message'].indexOf('remember') !== -1) {
62+
logger.info('PocketIO private_chat_message > ' + 'I remember you, ' + user);
63+
} else {
64+
logger.info('PocketIO private_chat_message > ' + 'I am fine, ' + user);
65+
}
66+
});
67+
68+
socket.on('disconnect', function () {
69+
logger.info('SocketIO : Received ' + nb + ' messages');
70+
logger.info('SocketIO > Disconnected socket ' + socket.id);
71+
});
72+
});
73+
74+
server.listen(port);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
/**
3+
* This file is part of the PocketIO package
4+
*
5+
* For the full copyright and license information, please view the LICENSE file
6+
* that was distributed with this source code.
7+
*/
8+
9+
use PocketIO\Client;
10+
use PocketIO\Engine\SocketIO\SocketIO;
11+
12+
require __DIR__ . '/../../../vendor/autoload.php';
13+
14+
$client = new Client(new SocketIO('http://localhost:1337'));
15+
16+
$client->initialize();
17+
$client->emit('broadcast', ['foo' => 'bar']);
18+
$client->close();

0 commit comments

Comments
 (0)